// Copyright (C) 2018-2021 Intel Corporation
// SPDX-License-Identifier: Apache-2.0
//

#include "gtest/gtest.h"
#include "ngraph/ngraph.hpp"
#include "ngraph/runtime/tensor.hpp"
#include "ngraph/type/bfloat16.hpp"
#include "ngraph/type/float16.hpp"
#include "runtime/backend.hpp"
#include "util/all_close.hpp"
#include "util/all_close_f.hpp"
#include "util/engine/test_engines.hpp"
#include "util/known_element_types.hpp"
#include "util/ndarray.hpp"
#include "util/test_case.hpp"
#include "util/test_control.hpp"
#include "util/test_tools.hpp"

using namespace std;
using namespace ngraph;

static string s_manifest = "${MANIFEST}";

using TestEngine = test::ENGINE_CLASS_NAME(${BACKEND_NAME});

static std::vector<float16> from_float_vector(const std::vector<float>& v_f32)
{
    if (v_f32.empty())
    {
        return std::vector<float16>();
    }

    size_t num_of_elems = v_f32.size();
    std::vector<float16> v_f16(num_of_elems);
    for (size_t i = 0; i < num_of_elems; ++i)
    {
        v_f16[i] = float16(v_f32[i]);
    }
    return v_f16;
}

static std::vector<float> to_float_vector(const std::vector<float16>& v_f16)
{
    if (v_f16.empty())
    {
        return std::vector<float>();
    }

    size_t num_of_elems = v_f16.size();
    std::vector<float> v_f32(num_of_elems);
    for (size_t i = 0; i < num_of_elems; ++i)
    {
        v_f32[i] = float(v_f16[i]);
    }
    return v_f32;
}

static const std::vector<float> input_data = {
    0.85943836,  0.009941814, 0.004292889, 0.54598427,   0.8270831,   0.49770153,  0.9035636,
    0.19274887,  0.8589833,   0.88759327,  0.72343576,   0.057539318, 0.915801,    0.63455844,
    0.25069925,  0.045601673, 0.29793364,  0.8492151,    0.6885839,   0.57419384,  0.009737609,
    0.68192583,  0.7614807,   0.37603703,  0.51804876,   0.033039097, 0.63702065,  0.78960556,
    0.5007368,   0.7248742,   0.2040932,   0.1211606,    0.76035476,  0.44004318,  0.95635134,
    0.82913375,  0.225465,    0.009166263, 0.05445403,   0.5885675,   0.87822133,  0.14324947,
    0.68606305,  0.3274419,   0.9169595,   0.732179,     0.04614906,  0.03505424,  0.84526163,
    0.9972937,   0.89781004,  0.9987864,   0.24641308,   0.34678686,  0.22731997,  0.95805293,
    0.595993,    0.8537836,   0.9174756,   0.17441267,   0.86681056,  0.15913424,  0.6638066,
    0.522398,    0.51548326,  0.024979044, 0.1731268,    0.068090245, 0.6125645,   0.4865482,
    0.2873719,   0.35936728,  0.64452374,  0.27963468,   0.59981745,  0.6309508,   0.507604,
    0.23389837,  0.77500635,  0.4462004,   0.53165394,   0.6535075,   0.4306448,   0.21468966,
    0.6925882,   0.11183031,  0.25347117,  0.2209481,    0.8060583,   0.34712377,  0.78980505,
    0.16110454,  0.6376819,   0.78736854,  0.909368,     0.6915289,   0.24747796,  0.32442623,
    0.22714981,  0.23976989,  0.25199527,  0.28412706,   0.32461873,  0.51917267,  0.8394496,
    0.6324911,   0.28498915,  0.8887276,   0.90213394,   0.16050571,  0.32190812,  0.67677563,
    0.8594967,   0.28917953,  0.1931407,   0.8282108,    0.14881423,  0.18073067,  0.8490643,
    0.2356146,   0.86200285,  0.57409924,  0.94718546,   0.092213534, 0.34502912,  0.4719212,
    0.60031396,  0.22602181,  0.3067876,   0.49529344,   0.11133887,  0.47633907,  0.13236542,
    0.69677263,  0.8490109,   0.6685073,   0.24199674,   0.7983137,   0.37593383,  0.74520975,
    0.16743147,  0.84144354,  0.93073046,  0.55940866,   0.67484015,  0.077098235, 0.69045097,
    0.06949082,  0.6804774,   0.79804176,  0.49027568,   0.8843709,   0.5665486,   0.91798306,
    0.47884017,  0.94707423,  0.98279756,  0.62054926,   0.8134105,   0.01336217,  0.78324115,
    0.9938295,   0.99227554,  0.66681916,  0.38842493,   0.3835454,   0.120395586, 0.5478275,
    0.13309076,  0.9468553,   0.24595714,  0.0057277656, 0.14570542,  0.31220108,  0.41687667,
    0.679465,    0.5731583,   0.7383743,   0.013198466,  0.34619793,  0.9278514,   0.48510832,
    0.46039802,  0.8171329,   0.5041023,   0.37600085,   0.124404594, 0.4201713,   0.7470036,
    0.7340853,   0.8449047,   0.137517,    0.14771219,   0.99655616,  0.2178388,   0.4121613,
    0.8655656,   0.32849622,  0.7574791,   0.95230037,   0.5806251,   0.9598742,   0.7183528,
    0.042957753, 0.2926446,   0.5882527,   0.05208914,   0.3216481,   0.5205192,   0.5095992,
    0.011508227, 0.5209922,   0.78207654,  0.34570032,   0.7968098,   0.4619513,   0.0047925604,
    0.029039407, 0.7673424,   0.571703,    0.44400942,   0.82529145,  0.29335254,  0.34418115,
    0.48119327,  0.38321403,  0.31083322,  0.7179562,    0.41055596,  0.06207573,  0.8747831,
    0.6018095,   0.4483476,   0.16189687,  0.8611539,    0.79723805,  0.42178747,  0.95597315,
    0.5534858,   0.33466807,  0.36827618,  0.60728735,   0.6582703,   0.6790265,   0.870856,
    0.8868432,   0.43860948,  0.32468447,  0.77624434,   0.3403061,   0.14144918,  0.23022941,
    0.07176102,  0.06941459,  0.37346482,  0.9120822,    0.65890974,  0.77746564,  0.4515671,
    0.45455948,  0.15909587,  0.8017096,   0.6259673,    0.6117355,   0.77020043,  0.08495594,
    0.30376136,  0.55266386,  0.8497134,   0.91790336,   0.86088765,  0.88179666,  0.9009849,
    0.97200614,  0.94119,     0.77911216,  0.8057816,    0.14040896,  0.66522235,  0.6649202,
    0.048396785, 0.75035393,  0.4520953,   0.9877601,    0.46115568,  0.2167145,   0.9271302,
    0.39395386,  0.68578094,  0.576275,    0.20754486,   0.5408786,   0.46040633,  0.18199016,
    0.66303253,  0.6288556,   0.14313427,  0.91675115,   0.36198065,  0.51337945,  0.84241706,
    0.22333568,  0.38011634,  0.024615016, 0.19370414,   0.23593484,  0.32207185,  0.47971123,
    0.6202779,   0.6944977,   0.43612957,  0.07961436,   0.57468814,  0.100025274, 0.42476946,
    0.95338464,  0.666547,    0.8683905,   0.52689695,   0.6284723,   0.85813546,  0.4865953,
    0.8269112,   0.08833949,  0.69269264,  0.41784903,   0.5969149,   0.07599888,  0.14184453,
    0.49042618,  0.44027725,  0.6256328,   0.2716237,    0.0999099,   0.09831784,  0.92469853,
    0.24196884,  0.9073526,   0.7523511,   0.7761173,    0.28489882,  0.96349007,  0.5884645,
    0.74933976,  0.06400105,  0.4376275,   0.34752035,   0.6006149,   0.034923803, 0.066874385,
    0.9790322,   0.5558188,   0.97579825,  0.025802653,  0.537738,    0.24921915,  0.111012295,
    0.85987717,  0.781183,    0.69588315,  0.94621634,   0.74946797,  0.6949375,   0.009165181,
    0.91075164,  0.72913235,  0.25934777,  0.19463088,   0.5283304,   0.9241759,   0.0563183,
    0.74323857,  0.43722472,  0.2958358,   0.85980684,   0.029655656, 0.362904,    0.19682994,
    0.37778872,  0.09406928,  0.23010127,  0.44393733,   0.420214,    0.39723217,  0.13777487,
    0.06385251,  0.9535715,   0.89861375,  0.2463547,    0.673834,    0.8008994,   0.0861585,
    0.6613363,   0.79498637,  0.79322547,  0.083214305,  0.577025,    0.58655965,  0.119723536,
    0.0012204717};

static const std::vector<float> expected_dft1d_results = {
    6.329814,     4.2950764,     -0.8105316,   -0.7187835,  -0.059136264, 0.2709784,
    0.82793635,   0.57937646,    0.5997731,    -1.3291739,  1.188664,     1.462941,
    -0.01811248,  -1.8314927,    0.16004556,   -2.219835,   1.0620322,    -1.0679832,
    -0.68610185,  0.658314,      4.627743,     4.5935497,   -0.78950775,  -0.32600924,
    -1.4706655,   -1.1615934,    0.708719,     1.4568751,   -1.0970218,   -0.39268675,
    -0.5990571,   -0.81545514,   -0.39174145,  -0.420258,   0.55279106,   2.339339,
    -0.59915966,  1.3964193,     -0.8447231,   0.14907542,  6.2576666,    5.5670385,
    0.25636938,   -1.7026355,    1.161571,     0.12042561,  0.19768336,   -1.3421875,
    -0.90698814,  1.4111948,     0.70803046,   0.5795436,   1.2021728,    -0.5199567,
    -2.558736,    -0.80762154,   1.1657354,    -0.8685272,  1.2987087,    -1.0047817,
    5.6461143,    3.2111988,     0.2361581,    0.3099669,   0.6179653,    0.099535145,
    1.0438079,    -0.016701937,  -0.88529384,  -0.12907594, 0.64785606,   -0.8428119,
    -0.058392793, -1.0488291,    -0.4019828,   0.20333555,  0.45051938,   0.45967662,
    1.3713523,    -0.6549525,    5.5258985,    3.7522945,   -1.8860855,   -0.2230255,
    0.8160669,    -0.46607828,   0.123957604,  0.61024696,  0.26978388,   0.9723815,
    0.3050212,    0.69621503,    0.27244493,   -1.0805726,  0.20593566,   1.5653824,
    -0.27690098,  0.8950307,     -0.039584313, -0.18680441, 4.975611,     4.6955333,
    0.19031112,   -0.8860659,    0.91665065,   -0.5264673,  -0.4547393,   1.1623507,
    -1.4774656,   1.671129,      1.028168,     -1.6014669,  -1.2178835,   -0.13447604,
    -0.14712845,  -0.6739672,    -0.3273949,   -0.9012072,  -0.9661755,   0.03590688,
    4.771964,     5.244689,      -0.03415192,  -0.37281254, -0.49070793,  -0.65789306,
    0.8143984,    -0.8913989,    -0.19890547,  0.17876014,  -0.9956009,   0.82810897,
    0.55270624,   -0.023768127,  1.5358362,    0.6981953,   0.23165298,   0.51040155,
    2.4328363,    0.2267083,     6.4758024,    5.72882,     -0.8707881,   -1.110683,
    0.12478554,   1.3484334,     0.3689712,    0.29180524,  -0.8149491,   -0.0922713,
    -0.33161288,  0.78140867,    -0.9623072,   0.8999919,   -2.1120539,   0.84492886,
    -1.5347936,   0.7440938,     1.3312622,    -1.0220959,  3.8123238,    5.62084,
    1.3551373,    0.6460793,     -0.21639234,  -1.2077228,  1.1639122,    -0.05263084,
    0.48105645,   -0.5892652,    0.2349168,    1.128768,    0.42568994,   0.36398163,
    -1.2250046,   2.3513904,     0.64331245,   0.8099514,   1.1574583,    0.8668997,
    5.59726,      5.659527,      0.48095328,   0.59446967,  1.1849049,    1.4709316,
    -1.2589264,   -0.11577609,   0.6299068,    -1.4621243,  0.7872094,    0.18096408,
    0.5553762,    -2.0060503,    -0.4373122,   0.9938256,   0.89633095,   -0.5491595,
    0.8428093,    0.084472984,   4.52676,      4.351716,    0.73079205,   0.8098516,
    0.27877963,   -0.0073297992, 0.36545974,   0.6745955,   -2.3818088,   1.5816333,
    -0.16544427,  0.51321346,    -0.23699868,  -0.13254744, 1.551896,     0.62098134,
    0.7739359,    1.6108581,     0.36288044,   -0.42423314, 5.0995026,    5.1843014,
    -1.1968713,   1.1790991,     -0.018864498, -0.7500831,  0.0879575,    0.22010106,
    1.1136081,    2.2893274,     -0.6877146,   -0.40740123, 0.046427906,  0.8681825,
    -0.50678635,  0.23051873,    0.35328788,   -0.45622703, 0.1495475,    -0.104907334,
    4.8094087,    5.2818966,     0.49697292,   0.29568392,  -0.4144543,   -0.64546454,
    0.31737912,   -0.8962374,    -1.0404948,   0.91764164,  0.6826862,    0.08073502,
    0.33942595,   0.053232975,   -1.1867946,   0.51120156,  -1.1452568,   -1.4197243,
    0.82389224,   1.8939058,     6.882805,     6.4072084,   -1.3024135,   -0.22483894,
    -0.22082287,  1.0370905,     -0.7639439,   0.6950346,   -0.731326,    0.16821115,
    0.0887468,    -0.5732441,    -0.40715322,  -0.96244293, -0.89126545,  1.3140129,
    -0.42358512,  1.7674587,     -0.6400819,   -1.6113993,  4.4106574,    5.706909,
    -1.1110737,   0.10560027,    -1.1108764,   0.34190884,  2.1167603,    -0.067495525,
    -0.16237324,  0.2604496,     -0.8129095,   -0.42274237, -1.1412699,   -0.0011268258,
    -0.63462454,  -0.15172139,   -0.7164279,   0.14801888,  -0.3538928,   1.583736,
    4.9876184,    4.2879796,     -0.8491325,   0.5345522,   -0.60507995,  -0.9020085,
    1.0447598,    0.21135187,    -0.4787205,   -0.3230412,  0.8076494,    -0.04361339,
    0.62797767,   0.15487206,    -0.23772183,  0.69546384,  1.8609382,    -1.7030516,
    1.2658813,    -0.6791475,    4.921037,     4.8929176,   -0.0124401,   -0.6873918,
    -0.21879943,  -0.48610657,   0.36776963,   0.12423802,  -0.7854952,   0.48838156,
    -0.5085067,   -0.08865434,   1.1653454,    0.81965554,  -0.6399579,   -1.0967884,
    1.4099771,    -0.15370974,   2.8824244,    1.0534087,   4.7045717,    5.2045445,
    -0.6350576,   2.5321684,     0.6987691,    -0.53839976, -0.09889791,  0.5662097,
    0.4088725,    0.635128,      -1.763303,    -0.49720347, -1.0772469,   1.2422445,
    -0.3619956,   -1.311133,     1.5846866,    1.0530244,   -0.61141044,  0.74831486,
    5.433625,     3.9661994,     2.006918,     -0.8703619,  -0.7658511,   0.0811044,
    0.83877516,   -0.63553256,   -0.67563355,  1.7368636,   0.9372277,    1.8246815,
    0.8615329,    -0.18161502,   0.62479717,   0.2028623,   0.159001,     1.860977,
    0.04177074,   -0.49050322,   4.9402246,    4.0296063,   -0.74729615,  -0.27802998,
    -0.8077982,   -0.5414143,    0.467114,     0.9016136,   2.1971147,    -1.466963,
    -1.2350414,   1.0967304,     -0.95607626,  0.51462483,  0.28838068,   1.0117096,
    -0.21846394,  0.114624545,   -1.627146,    -0.9431294};

static const std::vector<float> expected_dft2d_results = {
    54.020195,    48.368538,   -1.8721353,   -3.7894967,   2.5850394,   -0.7094516,
    3.5357249,    1.6819549,   -3.4001002,   0.23887074,   2.9735894,    2.3982158,
    0.3599546,    -5.801426,   -4.427606,    5.2949734,    1.7113355,    1.428697,
    5.8978443,   -0.8472582,   -3.288164,    -0.099487126, -0.33851182,  2.614974,
    -2.766882,    0.18681616,  0.34976268,   -0.2601711,   4.998401,     -2.9831958,
    -1.6652081,   0.53361464,  -0.9001389,   -3.6454318,   -3.7148805,   -0.68562484,
    2.0633714,    -2.2154818,  -3.3697965,   3.5273929,    1.5474558,    -1.6305131,
    -5.3327236,   0.54002213,  -1.6671672,   2.4493377,    -2.2604918,   1.4117424,
    2.1797671,    2.5013056,   0.8525213,    1.6570821,    1.717532,     -2.101283,
    4.6570606,    -3.6786642,  0.8912736,    -0.4010569,   -5.9480867,   1.441097,
    2.1150498,    -1.4524796,  -3.5035098,   3.0815587,    -3.3185432,   4.7882123,
    5.64722,      -1.1192517,  1.8302126,    -2.5760055,   -0.41363025,  3.2350469,
    1.4296081,    0.8722873,   6.1752787,    -1.7328868,   2.312786,     4.4069357,
    1.7721124,    3.3802934,   -0.53283703,  3.7646027,    4.440572,     -4.353462,
    -2.7639425,   3.6855025,   1.8912748,    -2.5849285,   -2.9895856,   1.1341677,
    1.4818796,    0.7482485,   -1.3077981,   1.0669674,    -0.76039124,  -10.8791685,
    2.998129,     -4.2489543,  0.41752052,   -0.45298803,  -0.62486386,  0.5913104,
    -0.36638862,  -0.9528576,  -0.16223967,  -3.171127,    2.7200532,    -3.8751457,
    3.8895426,    1.0489256,   -0.091531515, 6.992935,     4.5098467,    -0.38218838,
    0.6637606,    -2.1199496,  3.9403267,    -0.870952,    2.4287906,    1.9679271,
    3.652341,     -4.4909067,  -1.4710087,   0.5256169,    5.4580984,    -2.6554706,
    -0.058261395, 3.6613276,   0.5612789,    1.0594783,    4.5429516,    -1.447232,
    -2.388829,    0.52541757,  -6.1111097,   -2.3621864,   -1.4885365,   -2.6265867,
    -4.4030347,   0.27728367,  3.9584684,    -3.7618577,   -3.128574,    -2.8671994,
    1.4171265,    0.02298975,  -2.0790722,   1.6526843,    0.59488124,   -3.2548752,
    -0.82249254,  1.3645289,   -2.9066925,   -3.4377484,   -2.501403,    -2.821631,
    -4.427053,    -2.3529994,  0.6670886,    -4.7455816,   -2.160026,    -1.0587022,
    1.1341916,    -0.9469211,  0.67554307,   -4.0473633,   -1.2422556,   4.538533,
    -0.739814,    -3.22405,    1.2332113,    -4.0489397,   -4.560828,    -3.5195189,
    6.7066355,    -2.8439593,  -0.43901098,  -3.9980454,   -4.2256207,   3.0529652,
    4.6105156,    2.720234,    2.3327744,    -1.0400636,   -0.048398018, 2.1603358,
    -0.22459112,  0.6870126,   -0.926849,    -7.2363615,   3.7953386,    3.195907,
    3.8662248,    -1.8919971,  0.91311014,   -0.36923724,  3.0576966,    0.19861764,
    -0.09782998,  -1.0179963,  50.71621,     49.313248,    -2.6195984,   3.396334,
    -3.1849973,   -2.4107025,  4.7431326,    1.7938776,    -2.5362587,   6.287631,
    -2.656609,    1.4825039,   -0.77803206,  2.3750808,    -1.9940716,   2.0271082,
    3.6380908,    2.822246,    2.2938647,    1.0260472,    3.248794,     -3.05949,
    2.0979533,    3.565119,    1.9497933,    0.2390036,    -2.255065,    0.7849397,
    1.9622431,    4.2382064,   -3.2529292,   0.78572094,   -2.9386084,   0.66875017,
    5.743927,     4.850876,    -4.8014383,   6.371132,     -2.6618924,   -1.8847032,
    -1.7702236,   -1.1031301,  1.4129921,    -0.080709964, -2.7634878,   -3.6456683,
    1.4174454,    3.4085226,   3.10102,      0.114031196,  -2.4092412,   0.27725983,
    2.8974152,    -1.866328,   -0.68216217,  2.249536,     -0.42875588,  -5.8182187,
    5.347006,     -6.2936745,  0.8000201,    3.651592,     1.3155181,    2.3413098,
    2.1600244,    1.8733575,   -2.4694557,   0.39358342,   2.020084,     -0.062472403,
    -4.131041,    -1.5137839,  -2.0354557,   1.1957052,    -0.6644075,   -2.0442688,
    2.0753646,    4.874056,    -0.090800405, 1.3911223,    0.68129027,   -4.0028048,
    -0.8021738,   0.43866205,  2.7812133,    0.4525791,    -0.87565154,  1.2364697,
    -2.725146,    2.7965212,   4.148448,     -1.9204504,   -0.61004305,  -4.790703,
    3.1498234,    0.79403657,  5.305445,     0.2803253,    -3.67164,     -4.3974924,
    -2.5132315,   -0.9139994,  6.841936,     -4.089568,    -1.2774054,   0.9789283,
    3.269153,     -3.3947415,  -7.5553513,   3.682307,     2.9227152,    2.3319635,
    2.754105,     -1.2598821,  1.4247041,    -1.8540356,   -2.675635,    1.2705915,
    5.2202816,    6.206577,    0.4957786,    2.1150033,    5.8791704,    2.8043785,
    -0.37886655,  0.011162788, -1.0408137,   -1.5385519,   -8.079001,    -0.68451786,
    2.3513699,    3.0877895,   2.6497078,    1.3670976,    0.77233493,   2.2921152,
    -1.2679763,   2.113087,    4.990262,     -0.046566606, 0.015865922,  1.1569002,
    -4.8347507,   1.9560149,   1.979923,     2.34512,      -0.9634773,   4.3939066,
    -6.2031984,   0.8311275,   -2.7740612,   -2.9296994,   -3.4624243,   -1.4588313,
    2.4724,       -0.79477566, -0.4295609,   5.8110385,    -2.6649034,   -2.270977,
    -2.5511568,   -3.1238616,  -4.46209,     0.16335368,   1.9146351,    1.0459399,
    2.8069792,    -0.4705832,  -4.0632596,   -2.220704,    1.7770543,    -0.5791014,
    -2.2041528,   3.026476,    5.324942,     -0.7805673,   5.9275556,    0.14159381,
    -0.81569004,  4.1947803,   -3.8557377,   -0.5163199,   2.478963,     -2.396379,
    -0.3930376,   -0.96302,    -0.9776549,   0.13852966,   0.26078847,   0.8342015,
    2.3698487,    4.109933,    1.3575013,    -0.5828376,   -0.028537825, -0.53020877,
    0.39626116,   -1.7572733,  -4.31769,     -2.1674476};

static const std::vector<float> expected_dft3d_results = {
    104.7364,     97.68179,     -4.491728,   -0.39316452, -0.59995466, -3.1201572,  8.278858,
    3.4758341,    -5.9363585,   6.5265055,   0.3169801,   3.8807175,   -0.418082,   -3.4263492,
    -6.4216776,   7.3220854,    5.3494234,   4.2509427,   8.191702,    0.17879319,  -0.03937006,
    -3.1589758,   1.7594413,    6.180092,    -0.8170867,  0.42582142,  -1.9053001,  0.52476853,
    6.9606423,    1.255014,     -4.9181366,  1.319335,    -3.838747,   -2.9766817,  2.0290484,
    4.16525,      -2.7380676,   4.155652,    -6.0316873,  1.6426877,   -0.2227689,  -2.7336447,
    -3.919732,    0.45931256,   -4.4306555,  -1.1963288,  -0.8430467,  4.8202653,   5.280785,
    2.6153364,    -1.556721,    1.9343407,   4.614946,    -3.96761,    3.9748988,   -1.4291265,
    0.46251905,   -6.2192726,   -0.60107887, -4.852579,   2.9150705,   2.1991146,   -2.1879911,
    5.4228687,    -1.158518,    6.661569,    3.1777658,   -0.7256692,  3.8502965,   -2.6384768,
    -4.544671,    1.721262,     -0.6058461,  2.067991,    5.5108714,   -3.7771575,  4.388153,
    9.280992,     1.681312,     4.7714148,   0.14845347,  -0.23820269, 3.6383984,   -3.9147997,
    0.017270446,  4.138083,     1.0156215,   -1.3484575,  -5.7147317,  3.9306912,   5.630328,
    -1.1722009,   -1.9178381,   -3.7237349,  2.3894331,   -10.085134,  8.303572,    -3.9686286,
    -3.2541199,   -4.850478,    -3.1380959,  -0.32268947, 6.475547,    -5.0424256,  -1.4396465,
    -2.1921992,   5.9892044,    -7.269888,   -3.665809,   4.7312326,   2.8311844,   9.324896,
    7.2639513,    -1.6420703,   2.0884657,   -3.9739842,  1.2646922,   0.39964193,  7.649071,
    8.174507,     4.148118,     -2.3759027,  4.4081597,   3.3299959,   5.0792284,   -2.6443086,
    -1.0990746,   2.1227744,    -7.517721,   0.3749615,   6.894322,    1.6405574,   0.26087707,
    1.8925169,    -5.3387756,   -0.07007182, -2.7565134,  -0.51350284, 0.5872268,   0.23071745,
    3.9743357,    -2.6049578,   -7.963324,   -0.9111862,  3.3970497,   2.368112,    -3.0425484,
    6.0465913,    -5.608317,    -2.4237492,  -3.5965526,  -1.5651696,  -6.369116,   -4.896579,
    -0.029001951, -3.616405,    -4.8566127,  3.4580388,   -1.9978137,  -7.016559,   -4.71118,
    -4.1825647,   -3.3278992,   -0.7835678,  2.5901778,   -3.0014238,  1.5647203,   4.06795,
    -4.803074,    -5.444754,    3.0102665,   -4.6280394,  -6.764982,   -0.49304247, 12.031577,
    -3.6245267,   5.488541,     -3.8564541,  -5.04131,    7.2477474,   0.7547778,   2.2039144,
    4.8117356,    -3.4364424,   -0.44143593, 1.1973162,   -1.2022457,  0.8255428,   -0.66605973,
    -6.4021583,   6.1651874,    7.3058405,   5.2237253,   -2.4748354,  0.88457155,  -0.89944726,
    3.453958,     -1.558656,    -4.4155188,  -3.1854444,  3.303988,    -0.9447114,  0.7474582,
    -7.185831,    5.770039,     1.7012511,   -1.2074116,  -0.11192033, -0.86384296, -6.048759,
    5.6302013,    0.9157127,    1.1379871,   -8.176507,   -2.433535,   3.2678652,   -1.9267552,
    -1.393548,    3.6039736,    -1.873306,   -6.536957,   2.9600024,   -2.4364662,  -0.95014465,
    -4.716674,    -0.052186966, 2.6048284,   -1.0451086,  3.036159,    -7.221403,   1.5877211,
    -0.25210607,  2.0384693,    -4.3141813,  -9.458808,   -5.5365014,  6.8648105,   -8.586614,
    -0.7079052,   5.412094,     3.3176801,   -0.5273831,  -6.745717,   0.62073076,  1.0963198,
    6.0950055,    -3.677938,    -1.9967818,  -0.921252,   2.387275,    3.261763,    1.3798212,
    -1.1798835,   -0.23495495,  5.339221,    -5.928199,   1.3200281,   5.417163,    -11.295093,
    7.7347717,    1.3150296,    -5.1040716,  -4.8190293,  0.74024755,  -5.4785676,  2.914854,
    8.116676,     -1.5128357,   -0.1898706,  -2.5135324,  3.7174103,   4.7488313,   3.4650638,
    -0.32341766,  6.8396864,    0.31138325,  0.2374219,   -0.46712062, 1.8629129,   1.9891711,
    -1.2141278,   7.7674093,    5.2427464,   -4.792124,   -5.5451555,  3.2329237,   2.766926,
    -3.8213987,   -0.26443875,  -1.6623533,  -2.6665692,  2.6686997,   -0.6977545,  5.85767,
    -3.9102163,   -11.673204,   -2.3073153,  -4.529278,   4.0891604,   3.9445055,   1.8883687,
    1.50531,      -7.2083244,   3.1367111,   1.1151649,   -4.1500554,  -0.54910004, -0.48040384,
    11.444895,    -2.6333811,   -3.0142484,  4.6609726,   1.755743,    0.87769306,  -0.7609439,
    -0.26591438,  6.615961,     -2.141545,   -2.7914915,  -4.2386503,  3.1565619,   -6.6059103,
    -7.35018,     -2.2787585,   5.836963,    -2.6666338,  0.98255026,  5.199881,    8.640279,
    1.7439961,    2.191582,     -4.535021,   -5.038538,   -0.841679,   -6.8834453,  -4.654301,
    -0.220559,    -4.7396717,   -9.393296,   0.32385087,  3.9426038,   -4.9187584,  1.7061774,
    -4.8232145,   -0.5627973,   -2.3221302,  -1.1155958,  -2.7412212,  6.798079,    -4.0860014,
    1.9515686,    4.2942266,    0.5557329,   -1.9789174,  -4.973804,   -2.0268555,  -3.9974911,
    -8.164038,    3.3319929,    -2.474605,   0.39113098,  2.0651584,   5.5962815,   -1.1102749,
    -1.2390921,   -5.0933027,   -4.0492353,  5.009116,    3.323446,    -1.0033474,  -0.54384375,
    -3.4698372,   -2.3566747,   -6.545992,   1.3816929,   -2.0633929,  -6.3665648,  -4.13964,
    -3.4099324,   -1.1418146,   8.466255,    3.2365537,   -0.14618888, 1.3563147,   0.3446387,
    3.1233552,    0.7530624,    0.548483,    -1.1876376,  -8.070564,   1.4254899,   -0.9140264,
    2.5087235,    -1.3091599,   0.9416502,   0.16097029,  2.6614356,   1.9558911,   4.219861,
    1.1494511};

static const std::vector<float> expected_dft1d_signal_size_results = {
    6.138384,      4.8263664,    6.2014966,    4.641298,     6.2220087,   3.340786,    3.8338857,
    3.458686,      6.393098,     6.578215,     4.9169006,    3.8786886,   5.0566025,   5.701084,
    5.099263,      6.690686,     4.686806,     4.9369535,    5.471756,    4.315829,    3.6622288,
    -4.547995,     2.3657713,    -4.4210963,   3.3341353,    -3.560755,   3.0613456,   -2.0019536,
    4.9098253,     -3.27648,     3.6913419,    -2.365142,    5.2827687,   -3.2966752,  5.633893,
    -2.990755,     2.4099903,    -2.5792742,   3.009334,     -3.318112,   -0.8632047,  -0.302661,
    -0.9658433,    1.3884914,    -0.12056512,  -0.5264965,   0.053616166, 0.5239285,   -0.37204745,
    0.6682581,     0.88452375,   -1.4486976,   -0.9331777,   -0.6865864,  -0.32639223, -1.2646291,
    -0.187691,     1.0645473,    -0.45738214,  0.48435384,   1.2216191,   -0.61395854, 2.4932637,
    -1.6152657,    0.99030006,   -0.45764852,  2.4245698,    0.31936115,  2.9254415,   0.4994774,
    0.2869299,     -0.82977176,  1.759331,     0.66088116,   2.0010936,   -0.18261093, 1.5729225,
    -0.6416664,    1.2219726,    -0.4185537,   -0.33628678,  0.21890742,  -2.2292616,  -0.9053817,
    0.53581333,    0.36471185,   0.90989465,   -0.067255855, 0.9978778,   -0.6023144,  1.2700583,
    -0.055348396,  0.7769584,    0.20883593,   0.68046755,   -1.3861976,  -0.7743764,  -0.17685926,
    -0.28369236,   0.7703819,    0.88469267,   0.7845876,    0.4245007,   1.0558772,   1.5855613,
    -0.88230014,   2.5918908,    0.5176118,    0.9809585,    -0.16784734, 0.44176394,  -1.8440124,
    1.8485708,     0.13407728,   0.99209386,   -0.49863797,  -0.05547434, 0.51047516,  0.95244277,
    0.16795856,    1.4046597,    1.2883723,    -0.4217211,   -0.30820233, -0.94360316, -1.0276735,
    1.8597782,     -1.7973311,   0.17352016,   0.14103556,   -0.53083634, -0.08058083, 0.58797073,
    -0.1623843,    1.0300912,    -1.594127,    -0.37183756,  0.6519355,   -0.67296886, 1.4364773,
    2.9115105,     -0.62121296,  0.10118961,   0.4055282,    -0.765203,   1.1095873,   0.25468233,
    -0.8044969,    0.37809694,   0.47051764,   -0.5070367,   -0.69294405, 1.678687,    -0.05850029,
    -0.15289319,   -2.1158576,   -0.28707075,  0.64672077,   2.1430318,   1.8936268,   0.287481,
    -1.212002,     -0.8066146,   -0.024840236, 0.4002909,    1.5536453,   0.90662,     -0.1200099,
    0.2907222,     1.3641009,    -1.2066911,   2.2924597,    -0.10727149, -0.90693283, -1.7303126,
    -0.9309965,    -0.39670166,  1.4576144,    1.8296418,    0.29156286,  0.914652,    0.48379737,
    0.35427743,    1.0552206,    1.0729686,    0.66110367,   1.1590368,   -0.883232,   1.5702324,
    0.37410414,    2.7553983,    1.3418052,    0.4280968,    0.43797877,  -0.42501903, 0.6896758,
    0.17888534,    0.7881189,    1.906157,     -0.893877,    1.6907314,   -0.07711154, -0.08057277,
    -0.94700074,   0.118160814,  1.0535691,    0.013901293,  -1.0134851,  -0.49273467, 0.77010435,
    0.61979324,    -0.4796943,   -0.9006692,   -0.14570916,  0.20728627,  -0.6043751,  -0.77368677,
    2.1912723,     -1.0270727,   -0.15626097,  1.6779256,    -1.3633705,  -1.419299,   0.4458414,
    1.8119955,     1.3894738,    -0.0533064,   -0.2651497,   2.156881,    1.774823,    1.6229321,
    0.83354133,    0.6217755,    2.7520647,    -0.8899409,   -0.5549828,  2.2334838,   1.866106,
    2.2245884,     1.6349602,    -0.17061183,  -0.75332606,  -0.7192313,  1.011065,    1.1424315,
    -0.14698744,   -0.5063292,   0.047560766,  0.8158023,    -0.99613833, 1.3294827,   -0.884288,
    1.9334476,     -0.82400334,  -1.0622213,   0.45689362,   0.3765804,   -0.2486183,  0.5129931,
    -2.1530728,    1.6927868,    -0.4909035,   0.07076289,   1.1461573,   1.2108444,   0.5570269,
    0.57290983,    1.0781552,    0.2522127,    0.9315722,    0.82063264,  -0.27504963, -1.298832,
    0.5996642,     0.035723105,  0.9061513,    0.7085681,    1.3870897,   -0.33059365, 1.4296496,
    -0.9227723,    -2.0201705,   -0.25814092,  -0.044265598, 0.74225616,  -0.7740435,  0.56227565,
    -0.7865786,    0.16598742,   -0.13509351,  0.65011877,   -0.5367288,  0.7644322,   1.754046,
    0.14904708,    0.0060333014, 0.81808805,   -0.023402452, 1.2871823,   -1.2016544,  -0.016474128,
    1.0952724,     -0.83657134,  0.959798,     -0.29334623,  0.46025404,  -1.329956,   0.88328505,
    0.311208,      1.5458176,    1.058334,     -0.65749556,  0.7922486,   1.2470598,   0.009132266,
    0.07870856,    0.6166347,    0.009361565,  -1.6813973,   0.3131196,   -0.3617983,  -1.6096013,
    -0.80183095,   0.60364366,   0.032118678,  0.53880775,   0.79869264,  2.0884013,   0.30808622,
    -1.1033678,    -1.0830308,   -1.5599371,   1.2167512,    0.439706,    -0.76799685, -0.46132383,
    -1.6585693,    -0.8193617,   0.15754253,   0.82434106,   -1.4365332,  2.5602462,   -0.59798455,
    2.2706695,     0.094361365,  1.5161843,    1.576273,     0.8282173,   -2.615784,   2.0659475,
    -0.70808023,   1.8205551,    -0.23570198,  1.0002637,    -0.84214133, 1.1558707,   -0.8486479,
    3.3955946,     -0.9163475,   1.2400286,    1.7278013,    -0.2593556,  0.12464893,  0.045035288,
    0.14191893,    0.60069644,   0.6033013,    -0.40642756,  0.30952126,  2.1911335,   0.38403878,
    -0.5504798,    0.7629653,    0.96752846,   -0.77223957,  -0.45594752, 1.2607243,   -0.5419304,
    0.06783953,    1.1299804,    -2.9180245,   2.812955,     -2.912982,   4.157113,    -0.7707863,
    4.184089,      -1.2218096,   2.2556906,    -2.2792397,   4.6580005,   -2.2278588,  3.2439072,
    -1.7189349,    2.8687704,    -3.8549495,   3.9684548,    -3.5499556,  3.1096249,   -1.6433489,
    3.6931372,     4.762172,     6.8113427,    5.6586823,    3.9343526,   4.874974,    4.044377,
    4.5118494,     4.560476,     4.814545,     5.255967,     4.8088293,   4.8661695,   5.5842476,
    3.047568,      6.3495092,    5.8194113,    3.9938629,    6.2386484,   5.357541,    4.734993,
    4.009847,      -1.85078,     3.257053,     -2.863433,    3.2807407,   -2.4543116,  2.3266344,
    -2.7742774,    5.0006027,    -3.1107163,   3.1461582,    -2.4130437,  1.9839633,   -3.2893786,
    4.9680586,     -1.5064957,   4.93627,      -2.2536325,   4.4328127,   -2.371289,   -0.09072271,
    1.6559569,     0.9273602,    -0.16627279,  -0.15694867,  -0.16094846, -0.30682713, 0.62848985,
    -0.16314042,   -1.793005,    -0.025120497, 0.035565466,  0.4509227,   1.029233,    2.6076002,
    -1.3557681,    -0.042177677, -1.8681216,   0.047852248,  -1.0646176,  3.5719476,   0.61097944,
    1.9404714,     -1.8996478,   1.4736449,    -0.3556636,   0.7955406,   -0.70645106, 0.106241465,
    -1.4871876,    1.4906516,    -0.5542434,   1.8523693,    -1.8795702,  0.20563364,  -1.7517232,
    -0.2156514,    -0.42685848,  1.2532125,    0.29982674,   0.6122022,   -1.2758396,  -0.7942943,
    -1.2208992,    -0.28703833,  -0.6799724,   -0.22529805,  0.88721895,  -1.6784416,  0.6357958,
    -0.40500844,   -1.1880269,   -1.3736604,   0.27873987,   0.9415196,   1.5691454,   0.637203,
    0.6283375,     0.8025869,    -0.73763883,  0.07619148,   0.29328048,  -0.21484284, 0.39326593,
    0.2614212,     0.25093663,   1.1460452,    -0.42564535,  1.2621714,   0.7867665,   -0.9763881,
    0.67735475,    1.3954227,    0.8466128,    2.6533723,    -1.3165393,  1.0205896,   -1.2907634,
    -0.09324902,   0.19477385,   -0.10201472,  1.2100208,    0.8927874,   1.1437554,   -0.27520463,
    -0.18907726,   -0.1451918,   0.3773734,    -1.0439434,   -0.35780138, 1.1060231,   1.0964282,
    0.2501399,     0.31307727,   -0.13760762,  -0.86377877,  -0.49448854, 0.09268577,  0.74952096,
    0.82891256,    1.9546115,    1.2895672,    2.1169534,    -1.0286292,  0.0854094,   0.63047266,
    1.0325564,     -1.0493125,   0.31182784,   2.3592472,    0.69874203,  -0.92576516, 1.5970948,
    0.7720525,     0.9282105,    -0.13239098,  1.5795128,    -0.7387508,  0.9950645,   0.11649346,
    0.7381579,     -0.9112861,   -1.0479062,   -0.9858517,   -0.31902313, -0.43754727, -1.9271741,
    0.41418013,    1.5709126,    0.12488553,   0.34839654,   -0.14153089, 1.2988961,   -0.17553245,
    0.36363417,    -0.4992725,   -0.87406987,  -1.5621511,   0.52947193,  0.17129752,  -0.19691896,
    0.88363117,    0.5983897,    1.4228462,    -1.309372,    1.6419725,   2.096242,    1.3451272,
    0.21495643,    0.16032922,   -0.21870668,  -2.3123596,   1.511457,    -1.2067473,  0.30244982,
    -0.5896039,    -0.20020528,  -0.17678946,  0.646347,     0.12540624,  0.8411275,   0.29581466,
    1.0424525,     -0.3198546,   1.5812268,    1.633207,     0.036333233, -1.9386438,  0.4908937,
    0.4255972,     -3.0946343,   0.4557737,    -1.538063,    -1.0618666,  -0.766645,   0.09507492,
    -1.1704439,    -0.58377063,  0.06451824,   0.084664315,  -0.33639127, 0.43388176,  0.7445558,
    0.56547284,    0.20360313,   -0.52746487,  -0.22392502,  0.10510802,  0.2932141,   0.13039428,
    0.2339833,     1.1078603,    0.07111454,   1.674398,     0.24977088,  0.7773813,   0.10618341,
    1.3232847,     0.07770634,   0.8410483,    0.6371973,    1.1520991,   1.6076822,   -0.553284,
    0.0399023,     1.6575105,    -1.002435,    -1.153806,    -0.338341,   0.75674164,  -1.9532704,
    -0.16773497,   -0.09083623,  -0.09499304,  -0.15297657,  0.6092089,   1.1756519,   -0.8699633,
    0.57320195,    0.77921844,   0.38325477,   -0.4647501,   0.16934802,  -0.9541189,  1.8387299,
    -0.2722485,    -0.9011179,   1.2189366,    1.0526755,    1.2198145,   -0.66335034, 2.4358046,
    -0.0044496655, 2.4705029,    0.7398137,    1.1581391,    -0.08892931, -1.3800118,  0.39516693,
    0.7783501,     -1.6864198,   0.90398335,   -0.09139767,  0.18852606,  -0.7292757,  -0.7595531,
    -0.30982962,   -0.37637365,  0.27046034,   -0.2601264,   0.06654024,  0.83308995,  2.1443768,
    0.7846114,     0.72724646,   0.43702295,   -1.3782393,   -1.555314,   1.0024056,   0.96103704,
    0.62146187,    2.4383464,    0.97525114,   0.1517681,    -0.05941461, 0.20787807,  -0.7399595,
    1.4447442,     0.370912,     1.5718691,    0.36367816,   1.2211394,   1.2772232,   0.46179056,
    1.0423609,     -0.1160976,   -1.8006848,   0.2063675,    0.699636,    -0.2978242,  0.36548108,
    0.13973325,    0.06818205,   -0.8364538,   -1.8770711,   -0.46342957, 0.5138623,   -0.7012725,
    1.3353106,     -0.7529058,   -0.5607584,   -0.3658438,   1.3651763,   -0.8271546,  -1.3937892,
    -0.4218138,    -1.5759501,   0.052277893,  -0.79160595,  1.0530065,   -0.25257057, 1.7259041,
    -0.09510864,   0.31564656,   -1.4286227,   2.806394,     -2.0088015,  0.6337404,   -1.4553217,
    0.3904129,     -0.8321003,   2.0365574,    -0.47588396,  0.03407097,  0.08727789,  2.440409,
    -1.3018095,    1.9136591,    1.5979958,    1.496789,     -0.2709299,  -0.38308293, -1.0800201,
    -0.7544405,    0.074904405,  1.2379612,    -0.62439823,  0.5188385,   -0.05306366, 1.060843,
    -0.17591527,   -0.21396813,  -0.27043432,  0.16332026,   -0.57039225, -0.76971775, -0.22342275,
    -0.28223512,   -0.66207,     -1.0938429,   -4.0251827,   4.238682,    -2.3085427,  4.3264065,
    -1.419694,     3.9545622,    -3.0023227,   3.424511,     -1.9520879,  3.0750623,   -3.127586,
    3.9366179,     -1.3875456,    3.5732715,   -3.2088501,   5.656434,    -3.9873497,  3.1138892,
    -2.331269,     4.533456};

static const std::vector<float> expected_dft1d_bfloat16_results = {
    6.3125,     4.28125,   -0.804688,   -0.722656,  -0.0551758, 0.271484,    0.832031,  0.578125,
    0.601563,   -1.32031,  1.1875,      1.45313,    -0.0197754, -1.82813,    0.15332,   -2.21875,
    1.05469,    -1.0625,   -0.6875,     0.660156,   4.625,      4.5625,      -0.785156, -0.332031,
    -1.46875,   -1.15625,  0.710938,    1.45313,    -1.09375,   -0.394531,   -0.59375,  -0.8125,
    -0.388672,  -0.419922, 0.546875,    2.32813,    -0.59375,   1.39063,     -0.84375,  0.143555,
    6.25,       5.5625,    0.251953,    -1.70313,   1.16406,    0.120117,    0.195313,  -1.34375,
    -0.90625,   1.40625,   0.699219,    0.574219,   1.19531,    -0.515625,   -2.5625,   -0.804688,
    1.15625,    -0.859375, 1.28906,     -1,         5.625,      3.21875,     0.240234,  0.308594,
    0.617188,   0.0947266, 1.04688,     -0.0205078, -0.875,     -0.126953,   0.640625,  -0.84375,
    -0.050293,  -1.04688,  -0.40625,    0.207031,   0.443359,   0.458984,    1.375,     -0.65625,
    5.5,        3.75,      -1.88281,    -0.226563,  0.816406,   -0.464844,   0.121582,  0.609375,
    0.269531,   0.960938,  0.304688,    0.695313,   0.273438,   -1.07813,    0.207031,  1.5625,
    -0.277344,  0.890625,  -0.0373535,  -0.185547,  4.9375,     4.6875,      0.191406,  -0.882813,
    0.914063,   -0.53125,  -0.455078,   1.16406,    -1.46875,   1.66406,     1.01563,   -1.59375,
    -1.21875,   -0.126953, -0.137695,   -0.671875,  -0.324219,  -0.902344,   -0.960938, 0.0281982,
    4.75,       5.25,      -0.034668,   -0.378906,  -0.492188,  -0.65625,    0.816406,  -0.890625,
    -0.201172,  0.173828,  -0.996094,   0.828125,   0.554688,   -0.020752,   1.53125,   0.691406,
    0.227539,   0.503906,  2.42188,     0.220703,   6.4375,     5.6875,      -0.867188, -1.10156,
    0.128906,   1.34375,   0.363281,    0.289063,   -0.8125,    -0.0976563,  -0.328125, 0.78125,
    -0.960938,  0.898438,  -2.09375,    0.847656,   -1.53125,   0.742188,    1.32813,   -1.03125,
    3.79688,    5.625,     1.34375,     0.640625,   -0.213867,  -1.20313,    1.15625,   -0.0522461,
    0.476563,   -0.585938, 0.228516,    1.125,      0.421875,   0.363281,    -1.21875,  2.34375,
    0.644531,   0.804688,  1.15625,     0.863281,   5.59375,    5.65625,     0.484375,  0.59375,
    1.17969,    1.46875,   -1.25781,    -0.115723,  0.628906,   -1.46875,    0.789063,  0.179688,
    0.554688,   -2,        -0.435547,   0.992188,   0.898438,   -0.546875,   0.847656,  0.0820313,
    4.5,        4.3125,    0.726563,    0.8125,     0.273438,   -0.00793457, 0.365234,  0.671875,
    -2.375,     1.57813,   -0.167969,   0.511719,   -0.239258,  -0.128906,   1.54688,   0.625,
    0.769531,   1.60938,   0.363281,    -0.417969,  5.09375,    5.1875,      -1.1875,   1.17188,
    -0.0154419, -0.746094, 0.0834961,   0.225586,   1.10938,    2.28125,     -0.6875,   -0.410156,
    0.0449219,  0.867188,  -0.507813,   0.229492,   0.353516,   -0.457031,   0.145508,  -0.108887,
    4.78125,    5.25,      0.498047,    0.296875,   -0.410156,  -0.644531,   0.320313,  -0.898438,
    -1.03125,   0.914063,  0.675781,    0.0810547,  0.335938,   0.0527344,   -1.1875,   0.503906,
    -1.14063,   -1.42188,  0.820313,    1.89063,    6.875,      6.375,       -1.29688,  -0.229492,
    -0.220703,  1.04688,   -0.765625,   0.6875,     -0.734375,  0.173828,    0.0917969, -0.574219,
    -0.408203,  -0.953125, -0.890625,   1.3125,     -0.421875,  1.75781,     -0.640625, -1.59375,
    4.40625,    5.6875,    -1.10938,    0.103516,   -1.10938,   0.34375,     2.10938,   -0.0664063,
    -0.164063,  0.261719,  -0.808594,   -0.414063,  -1.14063,   -0.00567627, -0.625,    -0.146484,
    -0.710938,  0.149414,  -0.363281,   1.57813,    4.96875,    4.28125,     -0.84375,  0.53125,
    -0.601563,  -0.90625,  1.04688,     0.213867,   -0.472656,  -0.320313,   0.808594,  -0.0415039,
    0.632813,   0.15625,   -0.238281,   0.695313,   1.85938,    -1.69531,    1.25781,   -0.679688,
    4.90625,    4.875,     -0.00488281, -0.6875,    -0.213867,  -0.488281,   0.367188,  0.118164,
    -0.78125,   0.488281,  -0.5,        -0.0839844, 1.15625,    0.820313,    -0.640625, -1.09375,
    1.40625,    -0.148438, 2.875,       1.04688,    4.6875,     5.1875,      -0.632813, 2.53125,
    0.695313,   -0.539063, -0.09375,    0.566406,   0.410156,   0.632813,    -1.75781,  -0.5,
    -1.07813,   1.23438,   -0.355469,   -1.3125,    1.57813,    1.04688,     -0.613281, 0.742188,
    5.4375,     3.95313,   2,           -0.863281,  -0.765625,  0.0791016,   0.835938,  -0.632813,
    -0.671875,  1.73438,   0.9375,      1.82031,    0.855469,   -0.178711,   0.621094,  0.206055,
    0.15918,    1.85938,   0.0454102,   -0.488281,  4.9375,     4,           -0.746094, -0.277344,
    -0.804688,  -0.539063, 0.460938,    0.898438,   2.1875,     -1.46875,    -1.23438,  1.09375,
    -0.953125,  0.515625,  0.291016,    1.01563,    -0.22168,   0.113281,    -1.625,    -0.945313};

static const std::vector<float> expected_dft2d_bfloat16_results = {
    54,         48.25,     -1.85938,   -3.8125,    2.59375,   -0.714844,  3.53125,    1.67188,
    -3.39062,   0.214844,  2.95312,    2.39062,    0.369141,  -5.78125,   -4.4375,    5.3125,
    1.70312,    1.41406,   5.875,      -0.875,     -3.25,     -0.0917969, -0.34375,   2.59375,
    -2.75,      0.199219,  0.355469,   -0.271484,  5,         -2.96875,   -1.65625,   0.539062,
    -0.90625,   -3.65625,  -3.71875,   -0.671875,  2.0625,    -2.1875,    -3.34375,   3.53125,
    1.53125,    -1.60938,  -5.3125,    0.53125,    -1.66406,  2.4375,     -2.25,      1.42188,
    2.17188,    2.5,       0.867188,   1.65625,    1.71875,   -2.09375,   4.625,      -3.67188,
    0.890625,   -0.412109, -5.9375,    1.46875,    2.125,     -1.4375,    -3.48438,   3.09375,
    -3.29688,   4.78125,   5.65625,    -1.11719,   1.82812,   -2.5625,    -0.386719,  3.21875,
    1.42969,    0.859375,  6.125,      -1.73438,   2.28125,   4.375,      1.76562,    3.375,
    -0.535156,  3.75,      4.4375,     -4.3125,    -2.76562,  3.67188,    1.89062,    -2.59375,
    -2.96875,   1.14062,   1.46875,    0.75,       -1.3125,   1.0625,     -0.765625,  -10.875,
    2.96875,    -4.21875,  0.417969,   -0.457031,  -0.625,    0.585938,   -0.388672,  -0.980469,
    -0.147461,  -3.15625,  2.71875,    -3.875,     3.875,     1.04688,    -0.0986328, 7,
    4.5,        -0.378906, 0.648438,   -2.125,     3.9375,    -0.859375,  2.40625,    1.98438,
    3.65625,    -4.5,      -1.45312,   0.53125,    5.4375,    -2.67188,   -0.0605469, 3.67188,
    0.546875,   1.07812,   4.5,        -1.46094,   -2.39062,  0.539062,   -6.0625,    -2.34375,
    -1.46875,   -2.60938,  -4.375,     0.283203,   3.96875,   -3.78125,   -3.10938,   -2.85938,
    1.40625,    0.0375977, -2.07812,   1.64062,    0.601562,  -3.25,      -0.820312,  1.35938,
    -2.89062,   -3.4375,   -2.51562,   -2.8125,    -4.4375,   -2.34375,   0.664062,   -4.75,
    -2.125,     -1.07812,  1.15625,    -0.953125,  0.65625,   -4.03125,   -1.21875,   4.5625,
    -0.734375,  -3.21875,  1.25,       -4.03125,   -4.5625,   -3.51562,   6.6875,     -2.84375,
    -0.429688,  -4,        -4.1875,    3.01562,    4.59375,   2.6875,     2.34375,    -1.03906,
    -0.0419922, 2.17188,   -0.214844,  0.695312,   -0.921875, -7.1875,    3.79688,    3.1875,
    3.84375,    -1.89062,  0.898438,   -0.371094,  3.04688,   0.197266,   -0.102539,  -1,
    50.5,       49,        -2.59375,   3.39062,    -3.17188,  -2.40625,   4.75,       1.78906,
    -2.51562,   6.28125,   -2.64062,   1.48438,    -0.789062, 2.375,      -1.98438,   2.03125,
    3.625,      2.8125,    2.28125,    1.01562,    3.25,      -3.03125,   2.0625,     3.5625,
    1.96094,    0.248047,  -2.26562,   0.792969,   1.96094,   4.25,       -3.25,      0.78125,
    -2.9375,    0.667969,  5.71875,    4.84375,    -4.8125,   6.34375,    -2.64062,   -1.85938,
    -1.75781,   -1.09375,  1.42188,    -0.0986328, -2.76562,  -3.65625,   1.42188,    3.40625,
    3.09375,    0.113281,  -2.40625,   0.291016,   2.90625,   -1.85938,   -0.695312,  2.26562,
    -0.425781,  -5.8125,   5.3125,     -6.28125,   0.8125,    3.625,      1.3125,     2.34375,
    2.14062,    1.89062,   -2.4375,    0.382812,   2,         -0.0454102, -4.125,     -1.51562,
    -2.04688,   1.19531,   -0.65625,   -2.03125,   2.0625,    4.875,      -0.0996094, 1.42188,
    0.648438,   -4,        -0.8125,    0.445312,   2.78125,   0.4375,     -0.867188,  1.25,
    -2.70312,   2.8125,    4.125,      -1.9375,    -0.585938, -4.75,      3.14062,    0.796875,
    5.3125,     0.277344,  -3.64062,   -4.375,     -2.51562,  -0.925781,  6.8125,     -4.0625,
    -1.28125,   0.972656,  3.26562,    -3.40625,   -7.5625,   3.6875,     2.90625,    2.34375,
    2.73438,    -1.26562,  1.41406,    -1.83594,   -2.65625,  1.29688,    5.1875,     6.1875,
    0.484375,   2.10938,   5.875,      2.79688,    -0.386719, 0.00540161, -1.01562,   -1.54688,
    -8.0625,    -0.679688, 2.34375,    3.07812,    2.625,     1.375,      0.75,       2.26562,
    -1.28125,   2.125,     4.96875,    -0.0222168, 0.0286865, 1.15625,    -4.8125,    1.95312,
    1.96094,    2.34375,   -0.984375,  4.375,      -6.1875,   0.828125,   -2.75,      -2.92188,
    -3.45312,   -1.45312,  2.46875,    -0.789062,  -0.433594, 5.8125,     -2.65625,   -2.26562,
    -2.54688,   -3.125,    -4.4375,    0.167969,   1.92188,   1.04688,    2.79688,    -0.453125,
    -4.0625,    -2.21875,  1.78125,    -0.570312,  -2.1875,   3.01562,    5.3125,     -0.765625,
    5.9375,     0.157227,  -0.8125,    4.1875,     -3.84375,  -0.523438,  2.46875,    -2.375,
    -0.408203,  -0.953125, -0.984375,  0.144531,   0.253906,  0.816406,   2.34375,    4.0625,
    1.34375,    -0.574219, -0.0258789, -0.53125,   0.390625,  -1.75,      -4.3125,    -2.15625};

static const std::vector<float> expected_dft3d_bfloat16_results = {
    104.5,     97.5,       -4.4375,    -0.414063, -0.582031,  -3.125,    8.25,      3.46875,
    -5.90625,  6.5,        0.3125,     3.875,     -0.419922,  -3.40625,  -6.40625,  7.3125,
    5.34375,   4.25,       8.125,      0.138672,  -0.0197754, -3.125,    1.71875,   6.1875,
    -0.796875, 0.445313,   -1.90625,   0.523438,  6.9375,     1.25,      -4.9375,   1.32031,
    -3.84375,  -2.98438,   2,          4.15625,   -2.75,      4.125,     -6,        1.66406,
    -0.223633, -2.70313,   -3.90625,   0.435547,  -4.4375,    -1.21875,  -0.832031, 4.8125,
    5.25,      2.625,      -1.54688,   1.95313,   4.625,      -3.95313,  3.9375,    -1.40625,
    0.464844,  -6.1875,    -0.632813,  -4.8125,   2.9375,     2.1875,    -2.17188,  5.4375,
    -1.15625,  6.6875,     3.20313,    -0.734375, 3.84375,    -2.60938,  -4.5,      1.70313,
    -0.617188, 2.0625,     5.5,        -3.78125,  4.34375,    9.25,      1.67188,   4.8125,
    0.115234,  -0.242188,  3.60938,    -3.90625,  0.0158691,  4.125,     1.01563,   -1.35156,
    -5.6875,   3.95313,    5.625,      -1.1875,   -1.89063,   -3.71875,  2.375,     -10,
    8.25,      -3.9375,    -3.21875,   -4.84375,  -3.14063,   -0.341797, 6.4375,    -5.0625,
    -1.42969,  -2.1875,    6,          -7.25,     -3.67188,   4.71875,   2.8125,    9.3125,
    7.21875,   -1.64063,   2.0625,     -3.96875,  1.26563,    0.4375,    7.625,     8.1875,
    4.125,     -2.375,     4.40625,    3.32813,   5.0625,     -2.65625,  -1.07813,  2.125,
    -7.5,      0.394531,   6.875,      1.625,     0.240234,   1.90625,   -5.3125,   -0.0849609,
    -2.75,     -0.492188,  0.574219,   0.261719,  4,          -2.625,    -7.9375,   -0.90625,
    3.375,     2.375,      -3.0625,    6,         -5.59375,   -2.40625,  -3.57813,  -1.5625,
    -6.34375,  -4.90625,   -0.0458984, -3.59375,  -4.875,     3.45313,   -1.98438,  -7,
    -4.6875,   -4.1875,    -3.29688,   -0.78125,  2.57813,    -3,        1.57031,   4.09375,
    -4.78125,  -5.4375,    3.03125,    -4.59375,  -6.75,      -0.492188, 12,        -3.625,
    5.5,       -3.84375,   -5,         7.1875,    0.761719,   2.17188,   4.8125,    -3.42188,
    -0.449219, 1.21875,    -1.20313,   0.835938,  -0.664063,  -6.375,    6.125,     7.25,
    5.1875,    -2.46875,   0.871094,   -0.902344, 3.4375,     -1.54688,  -4.40625,  -3.17188,
    3.28125,   -0.925781,  0.742188,   -7.1875,   5.75,       1.70313,   -1.20313,  -0.112305,
    -0.867188, -6.0625,    5.59375,    0.90625,   1.15625,    -8.125,    -2.4375,   3.26563,
    -1.92969,  -1.40625,   3.60938,    -1.89063,  -6.5,       2.9375,    -2.40625,  -0.96875,
    -4.71875,  -0.0493164, 2.625,      -1.0625,   3.03125,    -7.21875,  1.60156,   -0.238281,
    2.03125,   -4.3125,    -9.4375,    -5.5,      6.875,      -8.5,      -0.710938, 5.375,
    3.28125,   -0.523438,  -6.75,      0.632813,  1.10156,    6.125,     -3.65625,  -1.98438,
    -0.914063, 2.39063,    3.28125,    1.375,     -1.17969,   -0.226563, 5.34375,   -5.9375,
    1.3125,    5.375,      -11.25,     7.75,      1.3125,     -5.0625,   -4.8125,   0.746094,
    -5.4375,   2.89063,    8.125,      -1.5,      -0.171875,  -2.51563,  3.73438,   4.75,
    3.48438,   -0.335938,  6.8125,     0.308594,  0.214844,   -0.46875,  1.86719,   1.96094,
    -1.1875,   7.75,       5.25,       -4.78125,  -5.5625,    3.23438,   2.75,      -3.84375,
    -0.257813, -1.65625,   -2.65625,   2.6875,    -0.726563,  5.84375,   -3.90625,  -11.625,
    -2.3125,   -4.5,       4.0625,     3.9375,    1.89063,    1.50781,   -7.21875,  3.09375,
    1.13281,   -4.125,     -0.550781,  -0.472656, 11.375,     -2.625,    -3,        4.625,
    1.74219,   0.882813,   -0.761719,  -0.291016, 6.59375,    -2.15625,  -2.8125,   -4.1875,
    3.15625,   -6.625,     -7.3125,    -2.26563,  5.84375,    -2.6875,   0.953125,  5.21875,
    8.625,     1.75781,    2.17188,    -4.53125,  -5,         -0.832031, -6.84375,  -4.625,
    -0.195313, -4.75,      -9.375,     0.304688,  3.9375,     -4.9375,   1.72656,   -4.8125,
    -0.550781, -2.3125,    -1.09375,   -2.75,     6.8125,     -4.0625,   1.94531,   4.28125,
    0.5625,    -1.99219,   -5,         -2.01563,  -4,         -8.125,    3.3125,    -2.46875,
    0.414063,  2.04688,    5.59375,    -1.11719,  -1.26563,   -5.0625,   -4,        5,
    3.3125,    -1,         -0.539063,  -3.46875,  -2.375,     -6.53125,  1.39063,   -2.09375,
    -6.34375,  -4.15625,   -3.40625,   -1.15625,  8.375,      3.21875,   -0.126953, 1.34375,
    0.367188,  3.125,      0.773438,   0.546875,  -1.17188,   -8,        1.45313,   -0.902344,
    2.51563,   -1.3125,    0.921875,   0.157227,  2.65625,    1.94531,   4.1875,    1.17188};

static const std::vector<float> expected_dft1d_float16_results = {
    6.32812,    4.29688,   -0.811035,  -0.71875,   -0.0587158, 0.270508,     0.827148,  0.57959,
    0.599609,   -1.3291,   1.18848,    1.46289,    -0.0178833, -1.83203,     0.160034,  -2.2207,
    1.0625,     -1.06738,  -0.686523,  0.657715,   4.62891,    4.59375,      -0.789062, -0.326416,
    -1.4707,    -1.16113,  0.709473,   1.45703,    -1.09766,   -0.392334,    -0.599609, -0.814941,
    -0.391846,  -0.420166, 0.552734,   2.33984,    -0.599121,  1.39648,      -0.845215, 0.149414,
    6.25781,    5.56641,   0.256348,   -1.70215,   1.16211,    0.120178,     0.197266,  -1.34277,
    -0.906738,  1.41113,   0.708496,   0.57959,    1.20215,    -0.519043,    -2.55859,  -0.808594,
    1.16602,    -0.868652, 1.29883,    -1.00488,   5.64453,    3.21094,      0.235962,  0.310059,
    0.617676,   0.100159,  1.04297,    -0.0167999, -0.885254,  -0.12915,     0.648926,  -0.842773,
    -0.0584106, -1.04883,  -0.402344,  0.203247,   0.450439,   0.459229,     1.37109,   -0.654785,
    5.52734,    3.75195,   -1.88672,   -0.223389,  0.816895,   -0.46582,     0.123657,  0.609863,
    0.27002,    0.97168,   0.304932,   0.696289,   0.272217,   -1.08105,     0.205933,  1.56543,
    -0.276367,  0.89502,   -0.0397949, -0.187134,  4.97656,    4.69531,      0.190063,  -0.88623,
    0.916504,   -0.525879, -0.454834,  1.16211,    -1.47754,   1.67188,      1.02832,   -1.60156,
    -1.21777,   -0.134521, -0.147461,  -0.67334,   -0.32666,   -0.901367,    -0.966309, 0.0360413,
    4.77344,    5.24609,   -0.0340881, -0.372559,  -0.490723,  -0.657715,    0.814453,  -0.891602,
    -0.199219,  0.179199,  -0.996094,  0.828613,   0.552246,   -0.0240173,   1.53516,   0.69873,
    0.231689,   0.510742,  2.43164,    0.226562,   6.47656,    5.73047,      -0.871094, -1.11035,
    0.125244,   1.34863,   0.369141,   0.291504,   -0.814941,  -0.0922852,   -0.331299, 0.780762,
    -0.962402,  0.899902,  -2.11133,   0.845215,   -1.53516,   0.743164,     1.33203,   -1.02148,
    3.8125,     5.62109,   1.35449,    0.645996,   -0.216187,  -1.20801,     1.16406,   -0.0525208,
    0.480957,   -0.589355, 0.234863,   1.12793,    0.425781,   0.36377,      -1.22461,  2.35156,
    0.642578,   0.80957,   1.15723,    0.866699,   5.59766,    5.66016,      0.480469,  0.594727,
    1.18457,    1.4707,    -1.25879,   -0.116394,  0.629883,   -1.46191,     0.787109,  0.181274,
    0.554688,   -2.00586,  -0.437012,  0.994141,   0.895996,   -0.549316,    0.842773,  0.0840454,
    4.52734,    4.35156,   0.730957,   0.810059,   0.278564,   -0.00706482,  0.365479,  0.674805,
    -2.38281,   1.58203,   -0.165527,  0.513672,   -0.236938,  -0.132935,    1.55176,   0.620605,
    0.773926,   1.61133,   0.362793,   -0.424316,  5.10156,    5.18359,      -1.19727,  1.17871,
    -0.0184937, -0.75,     0.0879517,  0.219238,   1.11328,    2.28906,      -0.688477, -0.407715,
    0.0468445,  0.868164,  -0.507324,  0.230225,   0.353271,   -0.456299,    0.149902,  -0.105286,
    4.80859,    5.28125,   0.496826,   0.29541,    -0.414551,  -0.64502,     0.317627,  -0.895508,
    -1.04102,   0.917969,  0.682617,   0.0803833,  0.339111,   0.0525818,    -1.18652,  0.51123,
    -1.14551,   -1.41895,  0.82373,    1.89453,    6.88281,    6.40625,      -1.30273,  -0.224731,
    -0.220825,  1.03711,   -0.763672,  0.694824,   -0.731445,  0.168091,     0.0882568, -0.573242,
    -0.406982,  -0.962891, -0.890625,  1.31445,    -0.423828,  1.76758,      -0.640137, -1.61133,
    4.41016,    5.70703,   -1.11133,   0.105713,   -1.11133,   0.341553,     2.11719,   -0.0671997,
    -0.161743,  0.260742,  -0.813477,  -0.422607,  -1.1416,    -0.000315189, -0.634766, -0.1521,
    -0.716797,  0.148071,  -0.353516,  1.58398,    4.98828,    4.28906,      -0.849121, 0.534668,
    -0.60498,   -0.902344, 1.04492,    0.211914,   -0.479004,  -0.322754,    0.807617,  -0.0440674,
    0.628418,   0.155029,  -0.237671,  0.695801,   1.86035,    -1.70312,     1.26562,   -0.679199,
    4.92188,    4.89453,   -0.012001,  -0.6875,    -0.218506,  -0.486816,    0.367432,  0.124451,
    -0.786621,  0.48877,   -0.508301,  -0.0883179, 1.16504,    0.819336,     -0.640625, -1.09668,
    1.40918,    -0.153564, 2.88281,    1.05371,    4.70312,    5.20312,      -0.634766, 2.53125,
    0.699219,   -0.538574, -0.098938,  0.565918,   0.408936,   0.634766,     -1.76367,  -0.49707,
    -1.07715,   1.24219,   -0.362549,  -1.31152,   1.58398,    1.05273,      -0.611328, 0.748535,
    5.43359,    3.9668,    2.00586,    -0.870117,  -0.765625,  0.0811768,    0.839355,  -0.635254,
    -0.675293,  1.73633,   0.9375,     1.8252,     0.861816,   -0.182007,    0.625,     0.203125,
    0.159302,   1.86133,   0.041687,   -0.490723,  4.94141,    4.02734,      -0.74707,  -0.277832,
    -0.808105,  -0.541016, 0.467285,   0.901367,   2.19727,    -1.4668,      -1.23535,  1.09668,
    -0.955566,  0.51416,   0.288574,   1.01172,    -0.219116,  0.114624,     -1.62695,  -0.943359};

static const std::vector<float> expected_dft2d_float16_results = {
    54.0312,    48.375,    -1.87305,   -3.78906,   2.58594,   -0.708984,  3.53516,    1.67969,
    -3.40039,   0.239502,  2.97461,    2.39844,    0.358887,  -5.80078,   -4.42969,   5.29688,
    1.71191,    1.42676,   5.89844,    -0.848145,  -3.28711,  -0.10022,   -0.339111,  2.61523,
    -2.76562,   0.185791,  0.349365,   -0.259277,  5,         -2.98438,   -1.66406,   0.533203,
    -0.898438,  -3.64453,  -3.71484,   -0.685547,  2.0625,    -2.2168,    -3.36914,   3.52734,
    1.54785,    -1.63281,  -5.33203,   0.538086,   -1.66699,  2.44922,    -2.26172,   1.41113,
    2.17969,    2.50195,   0.851562,   1.66016,    1.7168,    -2.10156,   4.65625,    -3.67578,
    0.893555,   -0.398926, -5.94922,   1.44043,    2.11523,   -1.45312,   -3.50391,   3.08203,
    -3.31836,   4.78516,   5.64844,    -1.11914,   1.8291,    -2.57617,   -0.412842,  3.23633,
    1.42773,    0.870117,  6.17578,    -1.73242,   2.3125,    4.40625,    1.77148,    3.38086,
    -0.532715,  3.76562,   4.44141,    -4.35156,   -2.76367,  3.68555,    1.8916,     -2.58398,
    -2.99023,   1.13477,   1.4834,     0.74707,    -1.30762,  1.06641,    -0.759766,  -10.8828,
    3,          -4.25,     0.417969,   -0.451416,  -0.625,    0.592773,   -0.366211,  -0.952637,
    -0.15979,   -3.17383,  2.71875,    -3.875,     3.89062,   1.04785,    -0.0922241, 6.99219,
    4.51172,    -0.383301, 0.664062,   -2.12305,   3.94141,   -0.869629,  2.42773,    1.96582,
    3.65234,    -4.49219,  -1.47168,   0.526367,   5.45703,   -2.65625,   -0.0605774, 3.66211,
    0.561523,   1.05859,   4.54297,    -1.44824,   -2.38672,  0.524902,   -6.11328,   -2.36328,
    -1.48926,   -2.62695,  -4.40234,   0.276123,   3.95703,   -3.75977,   -3.12695,   -2.86719,
    1.41699,    0.0242462, -2.08008,   1.6543,     0.595703,  -3.25586,   -0.820801,  1.36328,
    -2.90625,   -3.43945,  -2.50195,   -2.82227,   -4.42578,  -2.35352,   0.666016,   -4.74609,
    -2.16016,   -1.05859,  1.13379,    -0.946777,  0.675781,  -4.04688,   -1.24219,   4.53906,
    -0.742188,  -3.22461,  1.23145,    -4.04688,   -4.5625,   -3.51953,   6.70703,    -2.84375,
    -0.4375,    -3.99609,  -4.22656,   3.05273,    4.60938,   2.7207,     2.33398,    -1.04004,
    -0.0499268, 2.1582,    -0.223877,  0.686523,   -0.927246, -7.23438,   3.79492,    3.19727,
    3.86719,    -1.89062,  0.915039,   -0.369629,  3.05664,   0.201294,   -0.0986938, -1.01953,
    50.7188,    49.3125,   -2.61914,   3.39648,    -3.18359,  -2.41016,   4.74219,    1.79492,
    -2.53711,   6.28906,   -2.6582,    1.48242,    -0.777344, 2.37305,    -1.99512,   2.02734,
    3.63477,    2.82227,   2.29492,    1.02539,    3.25195,   -3.06055,   2.09766,    3.56641,
    1.94922,    0.241577,  -2.25391,   0.783203,   1.96289,   4.23828,    -3.25391,   0.787109,
    -2.9375,    0.66748,   5.74219,    4.84766,    -4.80078,  6.37109,    -2.66211,   -1.88477,
    -1.76953,   -1.10449,  1.41309,    -0.0806274, -2.76367,  -3.64648,   1.41602,    3.41016,
    3.09961,    0.116394,  -2.41016,   0.277344,   2.89648,   -1.86426,   -0.683105,  2.25,
    -0.430176,  -5.81641,  5.34766,    -6.29297,   0.800781,  3.65234,    1.31641,    2.3418,
    2.16016,    1.87207,   -2.4707,    0.392822,   2.01953,   -0.0645142, -4.13281,   -1.5127,
    -2.03516,   1.19531,   -0.666016,  -2.04492,   2.07422,   4.87109,    -0.0910034, 1.38965,
    0.680664,   -4,        -0.802734,  0.439697,   2.78125,   0.452393,   -0.876465,  1.23828,
    -2.72656,   2.79688,   4.14844,    -1.9209,    -0.609863, -4.79297,   3.15234,    0.793457,
    5.30859,    0.279785,  -3.67383,   -4.39844,   -2.51172,  -0.914062,  6.83984,    -4.08984,
    -1.27832,   0.978516,  3.26953,    -3.39258,   -7.55469,  3.68359,    2.92383,    2.33398,
    2.75195,    -1.25977,  1.42383,    -1.85449,   -2.67383,  1.27148,    5.21875,    6.20703,
    0.493652,   2.11523,   5.87891,    2.80469,    -0.37793,  0.0119629,  -1.04004,   -1.53711,
    -8.07812,   -0.686035, 2.35156,    3.08789,    2.65039,   1.36719,    0.771973,   2.29297,
    -1.26855,   2.11523,   4.99219,    -0.0458984, 0.0148392, 1.1582,     -4.83594,   1.95605,
    1.97949,    2.3457,    -0.963379,  4.39453,    -6.20312,  0.832031,   -2.77344,   -2.92773,
    -3.46484,   -1.45898,  2.47266,    -0.795898,  -0.428467, 5.8125,     -2.66406,   -2.27148,
    -2.54883,   -3.12305,  -4.46094,   0.164429,   1.91504,   1.04688,    2.80664,    -0.47168,
    -4.06641,   -2.22266,  1.77734,    -0.578613,  -2.20312,  3.02734,    5.32422,    -0.783203,
    5.92578,    0.141968,  -0.815918,  4.19531,    -3.85547,  -0.515137,  2.47852,    -2.39648,
    -0.394043,  -0.960938, -0.977051,  0.137573,   0.259766,  0.834961,   2.37109,    4.10938,
    1.3584,     -0.584473, -0.0278931, -0.530762,  0.396484,  -1.75781,   -4.31641,   -2.16797};

static const std::vector<float> expected_dft3d_float16_results = {
    104.75,    97.6875,    -4.49219,   -0.392578, -0.598633,  -3.11914,  8.28125,   3.47461,
    -5.9375,   6.52734,    0.316162,   3.88086,   -0.418213,  -3.42773,  -6.42578,  7.32422,
    5.34766,   4.25,       8.1875,     0.17688,   -0.0348816, -3.16016,  1.75781,   6.17969,
    -0.817383, 0.427246,   -1.90527,   0.523926,  6.96094,    1.25391,   -4.91797,  1.32031,
    -3.83594,  -2.97852,   2.0293,     4.16406,   -2.73633,   4.15625,   -6.03125,  1.64258,
    -0.221558, -2.73633,   -3.91992,   0.45752,   -4.42969,   -1.19727,  -0.844238, 4.82031,
    5.28125,   2.61914,    -1.55762,   1.9375,    4.61328,    -3.9668,   3.97461,   -1.42676,
    0.463135,  -6.21875,   -0.599609,  -4.85547,  2.91406,    2.19922,   -2.1875,   5.42188,
    -1.15723,  6.66016,    3.17578,    -0.726562, 3.84961,    -2.64062,  -4.54297,  1.72363,
    -0.606445, 2.06641,    5.50781,    -3.77734,  4.38672,    9.28125,   1.68066,   4.76953,
    0.148071,  -0.237183,  3.63672,    -3.91406,  0.0173492,  4.14062,   1.01465,   -1.34668,
    -5.71484,  3.93164,    5.63281,    -1.17285,  -1.91797,   -3.72656,  2.39258,   -10.0859,
    8.30469,   -3.96875,   -3.25586,   -4.84766,  -3.13672,   -0.321045, 6.47656,   -5.04297,
    -1.4375,   -2.19531,   5.98828,    -7.26562,  -3.66602,   4.73047,   2.83203,   9.32812,
    7.26172,   -1.64258,   2.08789,    -3.97656,  1.26562,    0.402588,  7.64844,   8.17188,
    4.14453,   -2.375,     4.40625,    3.33008,   5.07812,    -2.64453,  -1.10059,  2.125,
    -7.51953,  0.372559,   6.89453,    1.63867,   0.263672,   1.8916,    -5.33984,  -0.071228,
    -2.75781,  -0.512695,  0.587402,   0.230225,  3.97266,    -2.60156,  -7.96094,  -0.911133,
    3.39648,   2.36914,    -3.04297,   6.04688,   -5.60547,   -2.42383,  -3.5957,   -1.56543,
    -6.37109,  -4.89844,   -0.0288696, -3.61719,  -4.85547,   3.45898,   -1.99805,  -7.01562,
    -4.71094,  -4.17969,   -3.32812,   -0.782227, 2.58984,    -3.00195,  1.56348,   4.06641,
    -4.80859,  -5.44531,   3.00781,    -4.625,    -6.76562,   -0.492432, 12.0312,   -3.62695,
    5.48828,   -3.85352,   -5.04297,   7.24609,   0.754883,   2.20703,   4.8125,    -3.4375,
    -0.443848, 1.19727,    -1.20117,   0.824219,  -0.66748,   -6.40234,  6.16406,   7.30469,
    5.22266,   -2.47461,   0.887207,   -0.900391, 3.45312,    -1.55566,  -4.41797,  -3.1875,
    3.30469,   -0.945801,  0.745605,   -7.1875,   5.76953,    1.70215,   -1.20898,  -0.115417,
    -0.862305, -6.05078,   5.63281,    0.916504,  1.13574,    -8.17188,  -2.43359,  3.26953,
    -1.92383,  -1.39551,   3.60156,    -1.87305,  -6.53906,   2.96094,   -2.43555,  -0.952148,
    -4.71484,  -0.0558167, 2.60352,    -1.04297,  3.03516,    -7.22266,  1.58984,   -0.253906,
    2.03906,   -4.3125,    -9.46094,   -5.53516,  6.86328,    -8.58594,  -0.70752,  5.41406,
    3.31641,   -0.527832,  -6.74609,   0.618652,  1.09668,    6.09766,   -3.67773,  -1.99902,
    -0.919434, 2.38672,    3.26172,    1.38281,   -1.17969,   -0.237305, 5.33984,   -5.92578,
    1.32324,   5.41797,    -11.2969,   7.73438,   1.31348,    -5.10547,  -4.82031,  0.739258,
    -5.47656,  2.91406,    8.11719,    -1.51172,  -0.191284,  -2.51172,  3.71875,   4.75,
    3.46289,   -0.325439,  6.83984,    0.311768,  0.237549,   -0.465088, 1.8623,    1.99023,
    -1.21289,  7.76562,    5.24219,    -4.79297,  -5.54297,   3.23438,   2.76758,   -3.82227,
    -0.263428, -1.66113,   -2.66602,   2.66797,   -0.698242,  5.85938,   -3.91211,  -11.6719,
    -2.30664,  -4.52734,   4.09375,    3.94531,   1.88672,    1.50684,   -7.20703,  3.13672,
    1.11816,   -4.15234,   -0.55127,   -0.482422, 11.4453,    -2.63477,  -3.01562,  4.66016,
    1.75879,   0.876465,   -0.759766,  -0.267334, 6.61719,    -2.14062,  -2.79102,  -4.24219,
    3.1582,    -6.60547,   -7.35156,   -2.27734,  5.83594,    -2.66992,  0.979492,  5.19922,
    8.64062,   1.74414,    2.19141,    -4.53516,  -5.03516,   -0.841797, -6.88672,  -4.65625,
    -0.220825, -4.74219,   -9.39062,   0.322021,  3.94336,    -4.91797,  1.70703,   -4.82422,
    -0.562012, -2.32031,   -1.11719,   -2.73828,  6.80078,    -4.08594,  1.95312,   4.29297,
    0.558105,  -1.97949,   -4.97656,   -2.02539,  -3.99805,   -8.16406,  3.33008,   -2.47461,
    0.388672,  2.06445,    5.59375,    -1.11133,  -1.23828,   -5.09375,  -4.04688,  5.01172,
    3.32227,   -1.00293,   -0.545898,  -3.46875,  -2.35938,   -6.54688,  1.38086,   -2.06055,
    -6.36328,  -4.13672,   -3.41211,   -1.14062,  8.46875,    3.23633,   -0.145142, 1.35742,
    0.343994,  3.11914,    0.753418,   0.548828,  -1.18652,   -8.07031,  1.42383,   -0.911621,
    2.50781,   -1.30566,   0.942871,   0.161255,  2.66016,    1.95898,   4.21875,   1.14844};

static const std::vector<float> input_data_1 = {
    0.9795938,   0.14046684,  0.9819369,    0.51320475,  0.9390985,   0.06454252,   0.48972926,
    0.042538255, 0.3341647,   0.14752749,   0.44628578,  0.8509109,   0.6611515,    0.5711897,
    0.10807402,  0.67733586,  0.4091941,    0.23590194,  0.4385734,   0.40270114,   0.75568604,
    0.9842337,   0.82819414,  0.49742407,   0.7397849,   0.6104118,   0.019504193,  0.7756829,
    0.9271429,   0.6423316,   0.3300541,    0.8688829,   0.21220064,  0.76539195,   0.8143789,
    0.70724595,  0.54020476,  0.29437974,   0.19398275,  0.20308031,  0.30458412,   0.040420562,
    0.36627868,  0.61882246,  0.3416973,    0.5482437,   0.68851316,  0.5670022,    0.58812225,
    0.6487681,   0.88266903,  0.07287276,   0.7716641,   0.12443388,  0.4170407,    0.8380076,
    0.17115247,  0.8118648,   0.7704737,    0.5179812,   0.9407177,   0.7311383,    0.4538601,
    0.01992845,  0.4758718,   0.25867644,   0.55573237,  0.89606065,  0.8505143,    0.47349417,
    0.3970769,   0.3293097,   0.7601557,    0.24247961,  0.8102311,   0.7387785,    0.15742134,
    0.8387721,   0.100493915, 0.3733577,    0.4904671,   0.9106489,   0.0049963384, 0.89285916,
    0.24380954,  0.7329451,   0.9373891,    0.52886724,  0.65965563,  0.7307209,    0.5160155,
    0.97944415,  0.43991584,  0.9839402,    0.6350642,   0.16712844,  0.40538687,   0.80509937,
    0.4988989,   0.02185218,  0.74142575,   0.8026278,   0.28912508,  0.50405765,   0.7768013,
    0.9817653,   0.9995751,   0.74799776,   0.8615655,   0.058107413, 0.27611437,   0.76372087,
    0.93234706,  0.7603203,   0.30816016,   0.80595773,  0.8843074,   0.46457228,   0.43644127,
    0.6553406,   0.9050378,   0.5044161,    0.49364874,  0.59174323,  0.2650881,    0.78394204,
    0.57706285,  0.33071348,  0.7140054,    0.5885716,   0.60252094,  0.92644346,   0.91704935,
    0.64020824,  0.99652874,  0.8375778,    0.45622328,  0.3755286,   0.8324417,    0.77270067,
    0.50742614,  0.7814994,   0.30720684,   0.36613366,  0.9426107,   0.12557131,   0.87243265,
    0.002567238, 0.8350289,   0.1262151,    0.35253504,  0.07578735,  0.34082502,   0.9211622,
    0.38055828,  0.3247621,   0.5061271,    0.87862396,  0.1869049,   0.7774487,    0.030804915,
    0.25322768,  0.06073754,  0.27092665,   0.9209875,   0.86690956,  0.74456835,   0.42403135,
    0.61839956,  0.9004572,   0.94674456,   0.17315134,  0.74403226,  0.30930993,   0.23992635,
    0.9080931,   0.4886828,   0.9973065,    0.32888287,  0.32976696,  0.09137513,   0.1410893,
    0.4248779,   0.019689998, 0.6828394,    0.47350892,  0.02358055,  0.94660497,   0.9253734,
    0.1509718,   0.540138,    0.7050524,    0.20855357,  0.9753569,   0.0044813985, 0.5063834,
    0.6836877,   0.2784342,   0.0139586115, 0.8785785,   0.4754602,   0.38955635,   0.151705,
    0.5694773,   0.14548586,  0.6798502,    0.057361145, 0.031760257, 0.91168743,   0.5762714,
    0.54128575,  0.53421247,  0.5860678,    0.97197753,  0.940639,    0.18688098,   0.54635745,
    0.513619,    0.5645304,   0.91558236,   0.8496063,   0.6258071,   0.31261826,   0.20282389,
    0.2723365,   0.5039135,   0.6405068,    0.65471405,  0.5857442,   0.57205665,   0.23835625,
    0.32288164,  0.068663165, 0.43674967,   0.049117915, 0.78065604,  0.98437595,   0.60793245,
    0.38907775,  0.6610265,   0.5587009,    0.89418066,  0.6170649,   0.1305905,    0.5760506,
    0.10885323,  0.5303117,   0.16950679,   0.9630447,   0.9476875,   0.22327174,   0.87473476,
    0.917824,    0.44959846,  0.055421904,  0.22361691,  0.9334828,   0.16427046,   0.5914317,
    0.81789917,  0.48431975,  0.3067152,    0.53250873,  0.19298424,  0.23529118,   0.4841604,
    0.24943262,  0.41821656,  0.59484303,   0.4535004,   0.50373393,  0.6057788,    0.6799498,
    0.21368006,  0.17095569,  0.97966874,   0.3839032,   0.48672524,  0.9375583,    0.84598905,
    0.049092207, 0.47682214,  0.56488436,   0.7817405,   0.8975917,   0.75874424,   0.43242812,
    0.8459973,   0.7138231,   0.9834999,    0.7273379,   0.05828699,  0.6884237,    0.07486352,
    0.4326547,   0.78577167,  0.8844588,    0.9474644,   0.542272,    0.49642876,   0.48886803,
    0.11854455,  0.01492267,  0.22648218,   0.7607531,   0.5930919,   0.9450968,    0.02894685,
    0.67735505,  0.46363172,  0.18415985,   0.66824925,  0.6137258,   0.6086626,    0.6422855,
    0.7637218,   0.56419605,  0.74026155,   0.18709394,  0.14683136,  0.32289994,   0.15482259,
    0.11222768,  0.9085655,   0.43263617,   0.32097924,  0.29690787,  0.77809244,   0.2413839,
    0.8267769,   0.82795614,  0.018312717,  0.9958108,   0.769578,    0.13144562,   0.45904484,
    0.38071582,  0.24182741,  0.7200288,    0.20737973,  0.5285696,   0.3680287,    0.46252182,
    0.89153767,  0.13071166,  0.84319293,   0.10841641,  0.40668696,  0.7636801,    0.42153865,
    0.65055484,  0.86845386,  0.6452055,    0.6112245,   0.84526664,  0.15358071,   0.7889171,
    0.6356269,   0.2515375,   0.86599886,   0.20071381,  0.20584217,  0.24220705,   0.049883988,
    0.77259976,  0.49566683,  0.8112268,    0.49028614,  0.2187354,   0.70172536,   0.47309682,
    0.12539592,  0.13696012,  0.33588144,   0.98134226,  0.537496,    0.9999663,    0.13245043,
    0.5659106,   0.39207155,  0.48483336,   0.49371332,  0.12930158,  0.103645995};

static const std::vector<float> expected_dft1d_results_1 = {
    4.940035,     3.0077164,   -0.43999052, -0.72356576,  0.35775006,   -1.1781573,
    0.35552078,   -0.5878226,  0.8879826,   -1.1602633,   0.71755445,   0.15355057,
    -0.9307331,   0.48268145,  1.9486318,   1.1295953,    4.4481335,    5.01757,
    -0.57099926,  -0.85269475, -0.7217729,  -0.08008081,  -1.1429803,   -1.1934547,
    1.2154821,    -0.07181215, 0.59362185,  0.44658875,   -0.345927,    -1.480422,
    -0.20200539,  0.10152125,  3.4618404,   3.744587,     0.12548631,   0.8791516,
    0.19086862,   -0.33497274, -0.69986683, 0.6364535,    -0.6644666,   -0.44771492,
    -0.8179812,   0.17377639,  -0.92110324, 0.26135075,   1.0228279,    1.2105042,
    4.9957,       3.764995,    0.17936486,  -0.9405504,   -1.2201893,   -0.17718112,
    1.1820351,    0.5077594,   -0.052387,   0.86741495,   -0.55883414,  0.9524643,
    -0.68602496,  1.3873026,   0.8653134,   -1.17206,     4.107497,     4.150929,
    -0.95916677,  -0.56429225, 1.1602635,   -1.679503,    0.5507363,    0.53716975,
    0.38042903,   -0.5240841,  -0.33995685, -0.78949994,  -0.7040798,   0.05728233,
    -0.38874817,  0.8814098,   3.9273133,   5.9265537,    -0.80074155,  0.20659067,
    1.642705,     0.9759259,   0.85149074,  0.44840366,   -0.25961697,  0.78995633,
    -0.039625674, 0.545478,    -0.70991015, -1.1269569,   -0.68787766,  -0.48076022,
    4.848893,     4.6852283,   -0.6871975,  -0.041547477, -0.91873163,  -0.0071051717,
    -1.4497755,   0.3778788,   0.7214658,   0.6099715,    1.4334095,    -0.07150489,
    0.07712549,   1.859364,    -0.78209424, -0.97149,     4.8020935,    4.897006,
    0.05723229,   -0.21079391, 1.0996364,   0.22791737,   0.7594234,    1.1837918,
    1.1714673,    0.12949562,  -0.64135337, -0.5158363,   0.2763425,    -0.19547313,
    -0.06606534,  0.56645525,  5.3334026,   5.288664,     -0.09143779,  -0.7460747,
    0.2411859,    -0.5888344,  1.4911498,   0.52246934,   -0.1439941,   -0.51704764,
    0.32441977,   0.35291424,  -0.7496793,  -0.32638037,  -0.6930033,   0.72286314,
    4.4170227,    3.232138,    -0.64390934, -1.3210952,   -0.58362705,  -0.6716566,
    0.39952934,   -1.1999383,  0.83216095,  0.8710072,    0.34266293,   -0.92789006,
    0.46818644,   0.7554455,   2.3088598,   0.26656008,   4.306201,     4.1061068,
    -1.286478,    -0.14309806, -1.9038618,  -0.045521975, -0.43500268,  -0.6120295,
    0.3222475,    0.5537019,   1.2264881,   -1.5052714,   -0.12776875,  0.00045275688,
    -1.8553859,   -0.32851917, 3.50575,     3.7639909,    -0.8274512,   1.2718699,
    0.7064032,    1.7913067,   -1.4024514,  -0.49303484,  0.8707912,    -0.23823786,
    0.41937304,   1.443722,    -0.396856,   0.56620187,   1.0339032,    -0.12736642,
    1.7406936,    4.309397,    -0.18755847, -0.46101326,  0.020362198,  0.3217622,
    0.7620988,    1.9022003,   1.2856812,   0.3369981,    -1.149087,    0.5562107,
    -0.31068176,  0.4914955,   -0.49307993, 0.34580433,   5.2527924,    4.527175,
    -0.029956281, -0.35984623, 1.0824606,   -0.360453,    0.19873115,   -0.3701315,
    0.53464556,   0.8481753,   1.4529572,   1.012228,     -1.037719,    -0.6553353,
    -0.16041204,  -0.03164065, 3.2281785,   4.5399303,    0.3643899,    0.30424678,
    -0.7776585,   -0.3015166,  -0.61336106, -0.7931169,   0.5940609,    -0.29862595,
    -0.02879478,  0.6273444,   -1.6805825,  -0.17713517,  1.0924593,    0.1301811,
    4.4416904,    3.7987688,   -1.3668841,  -0.81391287,  0.64007276,   1.0288135,
    -0.57070565,  -0.52160406, 1.58955,     1.0018709,    -0.123293996, 1.390446,
    -0.5843305,   1.5380195,   0.44350854,  -0.26895642,  4.125044,     3.443525,
    0.7636179,    0.10296479,  0.52696383,  0.08359367,   0.6142223,    -1.2670981,
    0.3708297,    -0.6262324,  0.339195,    -0.5216981,   -0.34774148,  -0.30716318,
    1.0757314,    0.4062716,   4.1163635,   5.389367,     -0.1369414,   0.3118773,
    -0.48302984,  0.07917905,  1.6785579,   -0.9954241,   -0.09528947,  -1.517424,
    0.85461855,   0.18921553,  -0.62187576, -1.1891136,   0.12719542,   -0.558237,
    4.492761,     3.6913419,   -0.29317212, -1.2950531,   -0.03654802,  0.91552365,
    0.123229444,  0.514639,    1.0583864,   0.5574026,    -0.13546133,  0.9680127,
    0.87852824,   2.559589,    -0.3771388,  -0.043456703, 4.574666,     4.013397,
    -0.06427416,  -1.2290373,  0.11051571,  -1.2182673,   0.05659631,   0.77380556,
    0.65739393,   0.7978984,   -0.19493088, 0.9715779,    0.1553396,    1.2139899,
    0.79071796,   -0.57862896, 3.361268,    4.236172,     -0.13507411,  0.6842204,
    -1.1744223,   -0.62078804, 2.008315,    -1.2499349,   0.62419355,   -0.091858864,
    -0.5990913,   -0.90177983, -0.55390406, 0.40287262,   -0.94808567,  -1.2203228,
    3.745199,     4.248646,    0.63732016,  -0.82302505,  -1.9267471,   0.58008444,
    -0.38652933,  -0.9787377,  -0.1378448,  -0.4994706,   -0.24433172,  0.09051508,
    0.3651026,    0.010821462, 0.9935576,   -0.69421434,  4.5576744,    3.50811,
    1.745633,     0.16605312,  -1.8684177,  -0.33893645,  -0.17866233,  0.5833766,
    0.2571981,    0.38861072,  -0.5767294,  0.61207676,   0.43722266,   -0.28951776,
    0.78772557,   0.26002276,  3.9901466,   2.82238,      -1.4889656,   -0.1150527,
    0.47323376,   0.07621753,  0.16292411,  0.17989358,   -0.30915606,  0.50516117,
    -0.38916004,  1.9493489,   0.72058266,  -0.067055345, -1.4097221,   0.26290974};

static const std::vector<float> expected_dft2d_results_1 = {
    25.880518,   25.61235,    -2.4660468,   -1.9953613,   1.409625,    -2.473969,
    1.0969357,   0.34850854,  1.5074215,    -0.546504,    -0.44522142, 1.482357,
    -4.297778,   -0.41876173, 2.5581412,    1.6702101,    -0.79171646, 0.87513673,
    -0.5556948,  -1.4017968,  1.6127079,    3.341402,     -2.2336023,  0.7553977,
    0.8801464,   -1.5552741,  2.8809369,    -0.12944597,  -0.08941656, -2.4948978,
    1.1106122,   -0.5771601,  1.5280423,    -3.6573076,   -1.325342,   -0.75811887,
    -4.0773964,  0.41215408,  0.24999249,   0.3498589,    -0.31276864, -2.3484,
    -0.4591713,  -0.04454562, -0.7590859,   2.5111904,    3.1611128,   -0.09711918,
    -0.8617741,  -3.8058863,  -0.0812951,   1.1779473,    2.0081396,   -3.9112964,
    -0.6841551,  0.82309175,  -0.2995335,   -3.7176208,   -0.43554613, -2.4067037,
    -0.81405425, 2.0213914,   2.6072812,    4.772808,     2.3986423,   -1.6369095,
    3.009512,    -2.2388682,  0.08045465,   -2.0042,      3.2657382,   -0.93855727,
    1.3121321,   2.0163581,   1.3805538,    1.8802332,    0.20659024,  3.5175233,
    2.7225797,   -1.7004844,  1.4864945,    0.6589138,    -1.221076,   0.8748032,
    1.1129706,   -2.4330344,  0.43821555,   -4.865236,    2.2404962,   -0.81013864,
    1.3837745,   0.13940874,  0.16934663,   -2.240356,    -0.46793693, 2.7093167,
    27.21336,    25.973133,   -3.4792416,   -1.1907393,   -1.358995,   0.70610523,
    -0.63712704, -0.22086221, 3.7741385,    1.4088898,    3.1050003,   -1.2238663,
    -0.45265055, 2.6596098,   -0.053786665, 0.12850314,   1.7713342,   -0.92604506,
    -1.5456572,  0.4535787,   -0.4252041,   -0.20687354,  -0.26421398, -1.5723603,
    0.21247786,  -0.19034994, 0.116511285,  3.5963366,    -0.9552689,  1.4078308,
    0.17855054,  -1.2697299,  0.24928832,   -1.3436013,   -1.018871,   -1.1798176,
    -2.4574528,  0.14592099,  -0.7871367,   -1.3267987,   1.6891341,   0.8528522,
    -2.194655,   -0.7497572,  0.66770875,   1.4708114,    2.0073843,   0.8376069,
    1.7636304,   2.1868649,   -0.65098536,  -0.6707011,   -3.8038197,  -1.9890289,
    -0.15012956, 0.7975005,   -1.9746995,   -0.11563957,  2.8636346,   -1.2238576,
    -1.1479954,  0.40726233,  -6.6071806,   -1.2827955,   0.335096,    -0.8774332,
    0.5047921,   -1.7173706,  -0.6906272,   -2.8883119,   -1.7264752,  -0.91851616,
    -0.8023921,  2.1811929,   4.4178715,    -1.0245608,   1.4208769,   3.714005,
    2.626697,    -3.0808997,  -2.2393522,   3.0984519,    2.0667777,   4.0557647,
    3.22371,     4.1895566,   -5.1335697,   5.5083103,    1.4301378,   -0.47711706,
    0.29209352,  0.19667566,  0.9300822,    1.4966636,    -2.8442304,  -1.1616251,
    22.90476,    26.008162,   -0.59333247,  -0.9156835,   1.009171,    0.85137844,
    2.0695426,   -2.0451744,  4.279478,     -0.2552395,   1.3455946,   3.2537463,
    -4.582932,   -0.29923248, 2.0854027,    0.023423433,  -1.4901955,  1.2697036,
    0.12445855,  0.37839913,  -0.90889513,  -0.96464497,  3.2230172,   5.11582,
    1.7657483,   -1.2759314,  1.6806445,    -0.48582482,  1.0328861,   -0.21219438,
    -1.8203479,  0.28618455,  -3.8749995,   -2.6027172,   -2.7910428,  -1.8929406,
    0.43884945,  -0.8854169,  -0.6166424,   3.3119302,    3.9380612,   1.783706,
    -2.8637185,  0.45624626,  1.298605,     2.399745,     -0.42191154, 0.3671223,
    -4.7169294,  -1.4224572,  2.4742305,    0.80807984,   -1.4698355,  -0.64370054,
    -0.54362357, 1.729145,    0.2216661,    -0.920482,    -3.022968,   -1.9300321,
    -0.09508008, 0.31362647,  1.264819,     1.741091,     -0.48260987, 0.91905135,
    -1.2789521,  -1.0161536,  0.53328425,   4.0857644,    -0.8787215,  2.8750324,
    0.4081546,   2.4881384,   -2.2990177,   2.1299765,    0.59928864,  3.988031,
    -1.8122058,  -0.16000175, -1.8958641,   1.6846397,    0.9392875,   -0.12778088,
    0.51960033,  -0.5128077,  1.3190198,    0.42644808,   -2.8990207,  0.20179635,
    -1.7350545,  -0.08684918, -0.11685985,  -3.241004,    -2.2542362,  -0.18299285,
    24.721714,   22.520046,   0.40146637,   -2.611894,    -4.422385,   -0.6061659,
    1.7858734,   -0.17695832, 2.1501722,    1.6577435,    -2.1397042,  3.6897519,
    2.0028722,   3.830699,    -0.16294527,  -2.0136907,   2.7324684,   -0.48164713,
    -3.0283842,  -1.1742884,  2.3383465,    -0.04261756,  -1.3686588,  0.50161046,
    0.76707345,  0.40514386,  -1.7530769,   2.333971,     2.7187724,   4.413412,
    -3.610829,   0.57066756,  0.3970142,    -0.89236856,  -1.0979964,  -4.7337284,
    -1.6107149,  3.461636,    0.8141506,    1.3783914,    0.97534364,  -1.261203,
    0.9644269,   -0.4446571,  1.3737998,    1.5714393,    1.5593243,   -3.5085554,
    0.10169166,  0.3512014,   2.2333064,    1.7223357,    -1.7363904,  0.5177647,
    2.1198907,   -0.12688133, 1.7293842,    0.05056551,   -0.4828595,  -2.333132,
    -0.4791782,  1.5151871,   -0.91205263,  0.0061766207, -0.4048485,  2.1922839,
    1.728973,    0.9913887,   0.14321594,   1.6313545,    -3.389923,   -2.5937288,
    -0.36389086, -0.2227447,  0.03589952,   -0.069511056, 0.3542207,   2.3090918,
    0.45287704,  3.309232,    -0.59147376,  -1.541465,    -1.9963981,  -1.9641305,
    5.0686407,   0.53117156,  0.77804404,   4.1053996,    1.0922346,   2.7149107,
    2.5625482,   2.6316533,   -0.69931746,  1.7177012,    0.4107918,   1.375428787};

static const std::vector<float> expected_dft3d_results_1 = {
    100.72035,   100.11369,    -6.1371527,  -6.7136793, -3.3625832,  -1.5226498,
    4.315223,    -2.0944858,   11.711212,   2.2648964,  1.8656702,   7.201989,
    -7.3304863,  5.772318,     4.4268136,   -0.1915536, 2.2218904,   0.7371478,
    -5.005279,   -1.7441093,   2.6169558,   2.1272666,  -0.64345765, 4.800469,
    3.6254454,   -2.6164103,   2.9250154,   5.315038,   2.706975,    3.1141493,
    -4.1420155,  -0.99003804,  -1.7006547,  -8.495995,  -6.2332516,  -8.564608,
    -7.7067156,  3.134292,     -0.33963704, 3.7133825,  6.2897673,   -0.9730439,
    -4.5531178,  -0.7827141,   2.581028,    7.953187,   6.305909,    -2.4009464,
    -3.7133813,  -2.690277,    3.9752584,   3.0376637,  -5.0019054,  -6.0262628,
    0.7419828,   3.2228546,    -0.32318294, -4.7031775, -1.0777391,  -7.8937283,
    -2.5363095,  4.257466,     -3.6471338,  5.237282,   1.8462799,   0.5969913,
    3.9643247,   -3.981004,    0.0663265,   0.82460785, -2.7293837,  -1.5757694,
    0.55400586,  6.462948,     3.5353048,   2.9161394,  2.580977,    13.528652,
    3.98995,     -1.632153,    -3.240194,   3.900541,   -0.21140909, 2.8386583,
    9.924921,    1.7748868,    -2.5982907,  5.174925,   1.8638494,   1.6294506,
    2.5033612,   2.8808913,    0.2832532,   -2.2669961, -5.155612,   2.7401254,
    6.428844,    -2.8874602,   -0.45156026, 2.8010314,  1.7127267,   -6.3887377,
    -1.0165125,  4.816684,     -3.0209088,  -1.9152341, -6.7044344,  -7.0160933,
    -0.8859364,  2.3359919,    2.614932,    1.5376289,  0.2540813,   0.56656873,
    0.947714,    -3.2629232,   2.3573487,   7.069599,   -7.53059,    -5.4648676,
    -1.4810953,  0.27525342,   2.4626575,   -1.5132098, -4.127886,   1.3913381,
    1.090563,    -4.6527243,   4.9518104,   -0.906865,  5.0196123,   1.055696,
    -7.831962,   2.144308,     -1.838556,   -1.3607846, -2.1367745,  -4.8458967,
    2.0994475,   2.6582882,    -2.158319,   0.8175374,  7.929186,    -0.9123031,
    5.690818,    -4.0453672,   -4.948562,   3.2541595,  0.9711809,   -1.2001665,
    0.78384995,  1.3639677,    -0.6874037,  0.9069457,  3.6966968,   -3.823165,
    -1.826899,   2.3765814,    0.0534904,   8.726845,   -0.18846548, -3.2959056,
    1.5797036,   0.0014669895, -4.9724956,  -5.2561207, 5.819672,    -5.477039,
    3.3079143,   -0.033277154, 2.7245224,   -4.631716,  1.0122153,   -1.5371637,
    -1.8553452,  -3.7143025,   8.022276,    0.62215286, 3.8595328,   -3.060592,
    4.2517557,   -0.075296044, 0.5221062,   0.6199312,  1.9474881,   -1.3498385,
    0.6838516,   2.4967105,    0.06516862,  -0.6287519, -0.7507546,  6.147333,
    -3.149796,   3.1273334,    0.018394649, 0.8915896,  8.200176,    -1.7225304,
    2.0177326,   -1.2988436,   -0.13740933, -3.868376,  -0.06492156, 2.2702193,
    -10.430931,  -7.2083035,   4.860276,    3.578821,   -6.7857146,  3.5525331,
    4.142806,    -0.3026886,   -1.20933,    2.6262493,  2.6222875,   6.941968,
    1.6663432,   -3.0459986,   6.198147,    -6.5455766, -0.8200346,  -8.528335,
    2.722542,    0.4080863,    -2.993259,   -4.024056,  -1.999518,   3.2624865,
    0.42962015,  -4.08082,     -0.39366418, 3.6101956,  0.9608154,   -0.15634394,
    -2.0926623,  1.6061159,    -1.5019901,  1.8686844,  -0.8275065,  2.9409513,
    -7.4440265,  -7.7664104,   0.8106141,   0.9343933,  6.078513,    -3.0837321,
    -3.1975398,  1.8816166,    0.16744804,  -4.573029,  -5.839288,   -0.7797469,
    0.71803975,  0.41256714,   11.391333,   7.790516,   1.9857845,   -2.0327086,
    -0.5032053,  -2.5290394,   1.16115,     3.3385215,  7.5034156,   5.4487205,
    2.886569,    2.5460477,    -5.3722363,  5.1042805,  -0.9692185,  1.4824567,
    -2.1692014,  -2.0888186,   2.4214573,   0.78656745, -0.3521694,  -1.3446121,
    -6.659781,   -7.66657,     6.1127615,   -14.052498, -3.1808968,  -2.8461368,
    -3.2059226,  -2.7757711,   -0.17827892, -8.695724,  -0.2887354,  2.312519,
    -0.4773283,  2.095835,     -3.293869,   -4.960386,  -0.9118179,  -0.2619573,
    -0.92870337, -0.029317379, -2.5232022,  1.3327014,  3.1228013,   3.4733155,
    1.4562413,   -2.5750513,   -1.6694541,  1.7559463,  1.142877,    -1.3557005,
    -2.30802,    -0.29746848,  2.6858592,   1.5424967,  -3.3826494,  -3.2559767,
    -0.2901088,  -0.83393717,  -0.06207335, 2.225967,   1.8832793,   -5.9567456,
    4.7713566,   2.9260354,    5.854274,    -1.2023156, -2.0882115,  1.2139479,
    -1.2005312,  0.4508332,    3.571826,    -4.5633574, -6.3648844,  -3.4183156,
    2.7096481,   -3.659875,    -1.957063,   -0.5946456, -0.76313734, -0.016180754,
    2.0194921,   -0.72149086,  -0.16249031, -2.5144238, 5.9847684,   -5.335026,
    -1.0649127,  -3.176074,    -0.3549943,  -6.501223,  1.4781482,   2.8698225,
    0.3889513,   1.0389466,    2.6314335,   -2.6634102, 5.950971,    -1.8160157,
    6.9972243,   -2.4468954,   4.066836,    -6.923808,  2.4692469,   -2.1501422,
    -1.4999585,  -0.91028214,  4.634622,    4.132228,   -1.7976125,  0.59614825,
    10.924917,   0.63333595,   -1.2575581,  -2.6736045, -8.180259,   5.0657587,
    -3.065015,   -3.7651565,   -2.2837136,  -11.203299, 8.331546,    -0.6740327,
    5.5538063,   -2.0441968,   0.5072439,   2.630047,   4.323353,    -0.3627143};

static const std::vector<float> expected_dft2d_signal_size_results_1 = {
    16.022383,    15.693684,   -0.5664709,   -5.672549,    1.6033735,    -1.197921,    1.7188175,
    2.0131826,    3.5833678,   5.2242,       0.46792942,   1.134562,     -0.67151153,  1.9223167,
    0.8663217,    6.124037,    -2.2579927,   0.89829487,   19.077686,    18.455149,    0.22091317,
    -6.1652884,   3.7212925,   -2.246737,    2.152333,     -0.35627568,  2.3711212,    3.8686695,
    2.6396408,    0.9601658,   2.798329,     2.7985961,    -3.0813444,   2.1557612,    -2.7741354,
    0.020231158,  15.38469,    17.809353,    -0.18956879,  -1.9654348,   2.1695504,    -4.6052723,
    3.9439118,    1.2099034,   2.0613155,    0.06963302,   -0.44236425,  0.388348,     -1.0990168,
    1.5654994,    -5.6095753,  3.5276392,    -2.5259602,   0.11462754,   17.599613,    15.044548,
    -0.6420444,   -7.04445,    -1.3374522,   -2.994011,    4.8180413,    0.4241563,    -0.16446547,
    3.4031193,    1.6924896,   1.1558795,    -0.33493042,  3.6295547,    -0.43396032,  6.2375803,
    1.0340569,    -2.6632495,  17.096416,    15.208672,    -0.25167805,  -3.4815063,   1.0696993,
    -5.2873764,   3.1979918,   -0.007851064, 2.4643226,    1.5116049,    2.2652526,    1.3904041,
    -1.4545498,   0.3900972,   -2.9886885,   0.8594112,    -2.6304812,   1.0031368,    15.539574,
    17.902292,    -3.2155356,  -2.029044,    3.1789296,    1.7891771,    5.1005206,    -0.47131428,
    2.3852003,    1.3723673,   -1.1129482,   2.6773098,    3.0800571,    3.9973392,    -3.7624567,
    1.2616894,    -4.292824,   -1.0895696,   6.214655,     -5.0111494,   -1.411555,    0.7537558,
    0.16763747,   -2.843416,   1.3127775,    -1.9945961,   1.9270117,    -1.8245299,   0.14755654,
    0.119710535,  0.4844484,   -2.400567,    -0.7895191,   0.11959961,   2.022987,     1.5247601,
    2.940802,     -5.3442945,  -1.244915,    0.3108465,    -1.0918118,   -1.5366958,   0.7903812,
    -2.396515,    0.7696649,   -0.8931735,   -0.37421072,  -2.557737,    -0.7477829,   -1.0872394,
    -1.3062975,   -1.1412712,  0.78160894,   1.5905662,    4.9873405,    -6.715282,    -1.6470392,
    -0.42781863,  0.28193593,  0.7067425,    -2.6839638,   -0.57462484,  1.5813833,    -1.840177,
    0.5190145,    2.371542,    0.2732622,    0.15681863,   0.59334445,   2.0408263,    2.5408773,
    2.1669984,    2.546817,    -6.3569403,   -2.1067922,   1.5111246,    0.5735901,    -2.7920475,
    -1.0018231,   0.92297626,  1.4706146,    -1.4367175,   0.91449654,   -1.5520309,   0.19974053,
    -0.20228307,  2.309344,    0.36271697,   0.69444144,   -1.5499384,   2.2808971,    -4.045352,
    -3.9713645,   0.18369448,  1.7138574,    0.91558576,   -2.5425308,   -1.1829549,   0.2302165,
    -0.30635485,  0.61019206,  -1.425853,    -3.5264308,   -1.3583288,   -0.19054441,  0.04516536,
    -1.9273582,   2.771572,    3.5409505,    -2.9621074,   1.0486665,    1.2725343,    0.65368336,
    2.2211008,    -2.333774,   -3.4962246,   1.3083582,    -0.9263934,   2.2978144,    0.9176514,
    -0.6095743,   -0.518545,   0.30718052,   2.4780507,    -1.0288026,   -1.3045118,   5.109543,
    -3.7778285,   -1.1729475,  -1.3083767,   1.1134523,    0.1949772,    -0.097847104, -0.55074453,
    3.2532492,    -0.6656364,  1.5148337,    -1.4027967,   0.028162748,  1.0119103,    0.8516027,
    -1.6230793,   2.1586115,   2.5022216,    5.989767,     1.5173278,    -1.8896376,   -2.3683255,
    -1.0292325,   -2.0638425,  2.086112,     -0.5161866,   -0.77660584,  0.7603841,    -1.6347449,
    -0.068522215, 3.9827218,   1.4527302,    -0.121331334, -1.3804352,   -0.89542794,  -1.1340978,
    4.0029855,    -1.0835376,  -1.1934209,   1.8954589,    -0.8401254,   -1.9993141,   2.1870675,
    -2.8295417,   -2.0395064,  0.68151194,   -1.0094807,   -0.923614,    -1.7888981,   1.7585123,
    -1.8216331,   0.37374687,  0.9950139,    2.351936,     6.2798033,    1.7030699,    -0.47087464,
    -1.6360345,   -4.468318,   1.9200281,    -0.09482679,  -0.043346405, -0.9715949,   -0.34371126,
    0.09224248,   -0.1786593,  0.65415484,   3.1819649,    -1.7768605,   2.832635,     -3.1208003,
    -2.8149338,   5.781748,    0.034614563,  0.8586121,    -0.7064364,   0.77345586,   1.713623,
    1.2533236,    0.9109094,   3.2923024,    -1.0421813,   1.0721587,    -1.610004,    0.881869,
    1.9586189,    -1.6461011,  0.88225365,   1.3470546,    2.804223,     3.3672202,    3.4784017,
    -0.15211546,  0.04246044,  3.7608738,    -0.26021224,  -0.023485124, 3.0048823,    2.4691834,
    -1.2352742,   1.824518,    0.97959256,   3.5056772,    0.37062028,   -0.5023904,   -2.280041,
    -1.4408232,   0.74235415,  0.77733827,   7.157131,     2.0188837,    -2.4676952,   2.2076206,
    -0.9512329,   2.4511347,   1.5196023,    -0.66184056,  -1.0361224,   -2.452705,    -1.6693871,
    0.67556,      0.7263571,   -3.562127,    3.6935072,    2.6473353,    0.34725356,   1.2102544,
    5.872654,     0.78656757,  -1.734544,    0.10659918,   -1.5254192,   -0.4401021,   -2.3011737,
    -1.5704286,   3.2446222,   -0.09058446,  1.2970262,    0.03513348,   -2.1620555,   -2.3477712,
    1.0844729,    -0.31028935, -0.2960415,   -1.6364298,   5.4394045,    0.4011662,    1.0095837,
    0.6786694,    -0.16024262, -2.0813947,   0.82111263,   2.0470252,    1.2589197,    0.16413942,
    1.1889694,    -1.1947216,  0.09492111,   -1.2447665,   2.2591739,    1.107242,     -3.266813,
    1.62448,      5.5707865,   1.4339288,    0.5752156,    2.1131587,    -1.9095923,   0.44389912,
    2.6914995,    1.3760473,   0.59850556,   -1.7392722,   0.6407434,    0.7244801,    0.6499002,
    0.8710161,    2.361711,    -0.88572574,  0.36826122,   0.83188176,   5.91977,      1.3777022,
    -1.1016716,   5.073045,    -2.9808154,   -1.9151478,   -1.0893023,   -0.19272709,  -1.2990279,
    -1.1223007,   -0.48658985, -1.1106746,   1.1981947,    -1.0553399,   1.1354556,    1.3973879,
    -0.95949686,  3.825083,    7.3595786,    -0.042000458, -3.2074027,   -0.54039013,  0.91688734,
    1.3646243,    0.059570312, -2.4480567,   -3.120977,    0.3088463,    0.019118637,  -1.9716125,
    1.1828063,    -2.605321,   0.0031490326, -3.989009,    -1.0951542,   -3.423747,    0.9767442,
    -0.703821,    -0.53229225, 1.8792986,    -2.6091163,   0.073565304,  -3.0182452,   -1.9846222,
    -0.05088371,  -1.6033902,  1.1012542,    1.2818389,    -2.9548755,   -2.4526162,   -1.0030507,
    3.313137,     -1.8719615,  -6.977839,    4.587015,     -0.20812428,  0.6176362,    -2.5226798,
    1.6537584,    1.0535446,   0.1687131,    0.12539,      2.351955,     -0.62948394,  0.5153229,
    -1.483371,    -0.05357921, -0.6367198,   -4.435566,    -1.0412523,   -0.90299845,  -5.4293838,
    3.2729964,    1.8316314,   0.65426755,   1.3051615,    2.5043561,    -2.6727161,   -0.51436025,
    0.97311413,   0.7939715,   -1.4862274,   1.005588,     -0.9745222,   2.339565,     -1.0618652,
    -2.5664845,   0.19176674,  2.0832286,    -3.072213,    2.863511,     3.0667965,    -1.0378871,
    0.41042465,   0.49165142,  -0.92485595,  3.3757823,    -1.9955772,   -2.7065873,   1.1462497,
    1.7917634,    -0.27417037, -0.1864685,   -1.9386586,   1.0884712,    0.13079014,   1.2462993,
    -5.453458,    3.6369412,   -1.1260786,   -3.395249,    2.7768104,    1.427433,     -1.2371898,
    2.7506876,    -0.9577626,  -0.4295229,   -0.8855097,   0.2148636,    1.3714015,    -2.9233427,
    0.51835805,   -0.8493191,  -1.9358122,   -1.2579556,   -6.63626,     3.854603,     -0.1117461,
    0.36959448,   0.46802208,  2.4610949,    0.4212538,    1.9248259,    -1.3794608,   2.7059088,
    1.091836,     -0.37234998, -0.15367316,  0.66511256,   -2.183856,    -0.85531116,  1.759064,
    0.17355615};

static const std::vector<float> expected_dft2d_signal_size_results_2 = {
    13.276131,    13.103815,    12.738701,    10.948082,    15.043786,   10.639425,    12.309946,
    12.0796795,   12.158493,    13.553247,    11.337328,    14.506093,   15.737373,    13.892806,
    8.118599,     11.390546,    0.5381909,    1.3429388,    -0.95012784, -1.1195304,   0.09536344,
    -0.55193377,  0.8235052,    1.1744928,    2.2546248,    -0.5024011,  0.8459603,    1.935416,
    0.035488486,  -1.2282364,   -1.4211154,   -0.3135983,   -0.66958404, -0.80205476,  0.18983603,
    -4.1904936,   2.5468197,    -4.6636457,   -1.8926563,   0.83797,     0.5354397,    1.2066656,
    -0.9827197,   -0.26218012,  -0.11811975,  -0.47548425,  -1.3096738,  -0.14677164,  -1.4478016,
    -0.6947719,   0.13221443,   1.9222442,    2.1022313,    0.022250533, -2.556076,    0.25012577,
    -1.4458936,   -1.5957909,   1.5911676,    -2.0354197,   -1.226819,   -1.4284164,   -0.8624064,
    0.8694984,    1.7259736,    2.142551,     2.9860144,    -2.218176,   -0.29875967,  -0.13178241,
    -1.4536587,   -0.3602928,   -0.46407622,  3.210749,     0.51306593,  0.12302576,   0.23700514,
    -1.691548,    -1.3992835,   -0.47753286,  0.42123353,   2.3340597,   -1.8207074,   1.2562377,
    -1.1736273,   2.0084949,    0.1217463,    -0.71629894,  1.7867224,   -1.07459,     -0.46577477,
    1.7219527,    -1.7225032,   -0.5029696,   -0.38728696,  -1.1263466,  -0.1653564,   -0.8395238,
    1.9879192,    1.0128975,    1.6438143,    -1.188045,    -1.9405808,  -0.7925463,   1.2240379,
    -1.3743367,   2.5557013,    -0.6062887,   -0.99852824,  1.0005589,   2.1218362,    -0.10017598,
    -0.75340086,  -0.6988709,   0.36165902,   -0.13171434,  -0.5997418,  0.2789104,    0.52501214,
    -1.5872824,   0.0040130913, 3.0245605,    -1.34743,     1.8258516,   0.73562264,   -2.1836894,
    1.3283473,    0.038802683,  0.7543056,    -0.16875261,  2.0229807,   -0.9240825,   0.85228086,
    -0.9607723,   0.111747265,  0.69834816,   -2.5481172,   -0.5289763,  -0.5825273,   0.49042946,
    2.3490484,    -1.2178793,   1.9920914,    1.7048208,    0.4666462,   0.944975,     0.44091535,
    0.3074813,    2.064869,     -0.8005053,   1.2041193,    -2.94473,    0.5702777,    -1.4354767,
    2.0478277,    -0.8460398,   -0.6000862,   -0.27820373,  -0.5037507,  1.0071316,    0.92846537,
    -2.9930074,   -1.0054629,   -0.013398886, 0.31482947,   0.4755001,   -0.37606037,  0.35212934,
    -1.1386731,   0.46239042,   1.0611072,    -2.298436,    1.4551028,   0.3905257,    -1.427774,
    0.32839155,   2.325178,     0.5964565,    1.8381126,    1.1603787,   1.6229985,    0.5935496,
    1.6401024,    0.11901784,   1.2464942,    -0.9543896,   -0.45777965, 0.37926614,   -0.20978808,
    -0.599459,    0.016958952,  -0.672667,    0.16418982,   -0.5287609,  -0.25067472,  3.268743,
    -0.24228573,  0.15815735,   0.60354567,   -2.0075817,   -1.5436802,  -1.8892074,   -1.8738651,
    3.1379614,    -0.02182722,  1.8892908,    0.014802456,  -0.90126705, 1.0671308,    -0.61172044,
    -3.7529547,   0.5599045,    1.3885388,    1.425593,     -0.61869496, 0.70866895,   -2.8543148,
    -0.7371676,   -1.1487055,   0.9924042,    -2.1610408,   0.17656213,  1.2943268,    1.038288,
    -1.0522705,   0.62840223,   0.013757467,  -0.108183146, 0.090308785, -0.60490894,  -1.4133914,
    -0.7655864,   0.27606705,   -2.2265353,   0.48509985,   -0.37584236, -0.33032784,  0.112843275,
    -1.0625036,   -0.6842445,   0.33563662,   -0.64797795,  1.7336315,   0.24296224,   -0.5694554,
    -2.861343,    -2.8949642,   -2.4447322,   -0.45564282,  -3.1046734,  -2.7624254,   0.2988112,
    -2.9488277,   0.44427407,   0.11802065,   0.30626833,   0.5653825,   1.4086826,    -0.7607212,
    -0.36166418,  0.68313515,   -1.9396621,   0.552457,     1.787599,    0.700689,     -0.075103045,
    0.07150927,   -0.2504335,   0.4869701,    0.8627523,    -0.31363714, -3.4648805,   -0.66644526,
    -4.2852783,   1.5780505,    2.0349314,    -0.19262195,  0.6150762,   2.462497,     0.50935733,
    -1.2329292,   -0.32018808,  -0.43475008,  -2.747131,    1.7122769,   2.9606051,    -0.80461985,
    2.0191946,    -0.65316653,  0.10388613,   0.23720229,   -1.2899456,  -0.04140687,  1.0865793,
    2.0807414,    0.47735834,   0.039139986,  0.043996334,  -0.30400705, 0.8887136,    -0.8448317,
    0.4798069,    -0.9909992,   0.3054396,    0.5550651,    -0.62566614, 0.5333818,    -0.56075704,
    -0.7468512,   -0.19177368,  1.3637853,    -1.408153,    0.8004116,   -1.0253057,   -2.049946,
    0.6309613,    -0.18224144,  0.7479264,    0.8692721,    1.0770676,   -0.029760003, -1.4737389,
    0.5606033,    1.1633584,    0.064171284,  -0.8330089,   2.4364436,   -0.6911875,   -0.88729143,
    0.2826275,    2.2328167,    -0.4202252,   0.5975744,    -0.28619608, 0.87971634,   1.0560545,
    1.3650498,    -2.12536,     1.7964764,    0.5196252,    -1.3630133,  -0.39718735,  -0.16041839,
    -0.018146515, 0.644505,     -0.7543384,   0.39063865,   2.3242626,   0.18570781,   -0.33447194,
    -0.8394531,   0.06412578,   3.9682813,    -1.1106789,   3.655115,    -0.25420773,  -0.12754375,
    0.22988068,   -0.13729298,  -1.0493382,   -2.288222,    -1.1528109,  0.0876067,    1.4938865,
    0.6729909,    0.6704601,    0.12003565,   -0.64320755,  0.4911754,   -1.6283998,   -0.6994369,
    -0.9077794,   -0.61947733,  -0.8598275,   -1.0383508,   -3.1879523,  0.6378788,    0.5077131,
    -0.099037886, -0.48517847,  3.027417,     0.30669552,   -2.9577267,  3.5811238};

static const std::vector<float> expected_dft2d_signal_size_results_3 = {
    6.235876,    5.533142,     -1.1544118,  0.082814306, 1.6796162,    0.599913,    -0.38694367,
    1.4678228,   7.972584,     7.075794,    0.43039304,  0.068965316,  0.9859961,   0.9107602,
    -0.3760583,  -1.7655449,   6.727815,    7.016465,    0.08040795,   -0.27730647, -0.24473351,
    -0.28742158, -1.7693194,   0.9797714,   7.944232,    3.3173547,    -0.970581,   0.2367388,
    0.6001234,   0.73869,      0.78396153,  2.381297,    6.578037,     5.254505,    0.22289926,
    -0.50469196, 0.81392545,   -0.6079184,  -1.8542231,  -1.4371969,   5.182848,    7.0792365,
    1.7477604,   2.5558662,    -0.4264726,  -0.1144461,  0.13226332,   -1.0341146,  1.5301563,
    -2.5123873,  0.55265933,   -0.6910203,  0.8812098,   -0.38004306,  -0.86332023, -0.09744531,
    0.022181302, 0.0048598824, -0.51295733, -0.1617982,  -1.5669001,   -0.89008003, 0.6439479,
    -0.7541246,  0.09064455,   -1.8462008,  0.9278267,   0.029414916,  -0.8102952,  0.32216373,
    -1.0387933,  0.8412336,    -0.8255059,  0.24349298,  -1.9935097,   -0.10879634, -0.66851157,
    -1.0654241,  0.17485179,   0.15639359,  0.4183568,   0.9885812,    0.41185328,  1.5258284,
    0.9891837,   -0.30820954,  -1.5363256,  1.1204776,   -0.9755474,   1.7845668,   0.43930066,
    0.14675245,  1.5588113,    0.501778,    1.3166,      -0.54990625,  2.405043,    -0.7384981,
    2.135238,    -0.6406439,   -1.2197473,  -1.2720709,  -0.040249567, 0.3340183,   -0.69982177,
    -0.71987194, -1.2410803,   -0.98330003, 0.27524203,  0.9393509,    -1.0231966,  -0.89418787,
    -1.5361586,  0.7400294,    -0.4797501,  -0.20026025, 0.28715983,   0.4135941,   0.31160337,
    1.45322,     0.8597624,    1.4913996,   0.118060485, 0.04817532,   0.24861759,  -0.086301126,
    0.7859658,   0.43219715,   -0.15880768, -0.37046334, -0.058427185, -2.141556,   -0.6823787,
    -0.56347156, 0.5663684,    0.14823253,  0.8226858,   0.33215827,   -0.35511267, 0.6276708,
    -1.7566651,  0.27827078,   -1.8008664,  -0.68004596};

static const std::vector<float> expected_dft2d_signal_size_results_4 = {
    16.022383,   15.693684,   -1.6079187,  -2.5211797,   -0.5771674,   0.05202335,   -0.20892644,
    2.2068956,   3.953516,    0.34410894,  0.86641574,   1.6062691,    -0.28576106,  5.39313,
    0.29631865,  0.4604528,   19.077686,   18.455147,    -0.6079974,   -2.6523724,   1.5708399,
    -1.4308838,  -0.12822962, 0.39401102,  3.578989,     1.7037572,    1.2102947,    1.9145584,
    -0.9519639,  -1.1172407,  0.3622353,   0.057706878,  15.384689,    17.809353,    0.26336426,
    1.1215441,   -1.5200262,  -1.8461118,  2.1862373,    -0.8841291,   0.40979373,   -1.3552474,
    -1.1214476,  0.25225526,  -3.9052691,  0.16070783,   0.47419822,   0.84322566,   17.599613,
    15.044547,   -1.1941085,  -3.8985834,  -3.0904906,   0.7600602,    0.62432945,   -2.1925209,
    2.2314792,   2.2408223,   -0.58379686, 1.5055354,    -0.43706644,  3.6915889,    4.6112394,
    -1.8686706,  17.096416,   15.208671,   0.26360607,   -0.43837237,  -2.085052,    -1.9803678,
    0.5512935,   -0.7585812,  1.3307043,   -0.20800388,  0.64899683,   -2.204393,    -0.7423673,
    -0.53894585, -0.3806771,  1.2191849,   15.539573,    17.902292,    -3.2540998,   1.6752851,
    2.339312,    2.9226294,   1.2905213,   -0.86016166,  0.2067287,    -0.46054435,  0.845206,
    4.1277647,   -1.0080593,  -1.8169241,  -0.9365012,   -0.9034538,   4.193228,     -1.6578128,
    1.0010736,   0.13147289,  -0.58524096, -0.6177359,   -0.5433382,   -0.91701794,  -0.34512973,
    -1.1603408,  0.82712364,  -1.9715309,  -1.3202763,   0.7925887,    1.5136781,    1.1887463,
    0.07894993,  0.2629676,   0.47720033,  -0.6143549,   -0.35804892,  -0.7087485,   -0.9317253,
    -1.5261502,  0.012433767, -1.4340608,  -2.3467493,   -0.11921686,  -0.7176709,   -0.9460896,
    1.1034908,   0.98994523,  1.2861536,   -2.767478,    -1.6691985,   0.5312684,    1.0004808,
    -1.4490643,  1.6858988,   1.9467357,   -1.6837163,   0.61909866,   0.46550757,   -1.377079,
    0.03022629,  0.6342612,   1.8735541,   0.8252406,    -0.46249843,  -0.7055974,   1.0481787,
    1.154592,    -3.1120033,  -2.5491147,  1.5315402,    0.24330461,   -0.27145922,  -1.1044617,
    -1.4539453,  -1.0249764,  0.64292955,  -0.25380075,  1.3825793,    -2.2184052,   0.58045006,
    0.9588773,   -2.0319357,  2.364854,    0.9267142,    -1.7276525,   -1.258892,    2.0606081,
    0.17469049,  0.037098885, -2.7965002,  -2.0710194,   -0.066367805, 0.9294369,    -2.0530214,
    3.1182497,   0.7525606,   1.0215833,   0.7231224,    -0.76680106,  3.8408241,    0.66357744,
    -1.4999955,  3.0092032,   -0.9077265,  1.127433,     -1.3998711,   -0.45227063,  0.5452228,
    1.1795954,   -1.2053492,  -2.3661485,  -2.6609254,   -1.0594559,   0.35282075,   0.15202153,
    1.3333919,   -1.7648137,  2.4441655,   0.42185998,   0.39381158,   -1.9906393,   -1.7294805,
    -0.1867466,  -2.1970685,  -3.444776,   2.6147847,    2.4903462,    0.3241663,    0.63434124,
    -0.5939137,  0.22729027,  -0.8494644,  0.54981613,   -1.7602688,   -3.5211835,   -0.07873356,
    -0.1510309,  2.882863,    1.0030751,   -1.8153281,   -3.1542742,   -1.0870701,   0.0820543,
    -2.004652,   -1.2403183,  0.71638805,  1.2452526,    0.34644645,   0.57313305,   -4.812693,
    0.5708023,   -0.5506052,  -0.13743436, -0.5721044,   1.3499863,    -1.2981024,   0.0077233315,
    3.7563763,   1.8381448,   1.2751684,   0.082980156,  -1.1809301,   0.38965702,   1.9302576,
    0.9432045,   0.5983294,   2.1648314,   0.8428469,    1.4977492,    -0.7804593,   3.1802852,
    -2.1036444,  2.1590552,   -1.9935954,  -1.013362,    -0.6313343,   -0.019762993, -0.65470386,
    -0.48428255, 5.459507,    -1.2114509,  1.7786237,    -0.7012754,   0.17181313,   -2.092629,
    -0.65052056, -0.41800314, -1.3612752,  0.039184153,  1.7546436,    1.3561778,    0.54778004,
    4.72955,     1.3787336,   -0.63834924, -0.019961834, -0.8124193,   3.769576,     -0.23387921,
    -0.9165416,  -0.99439096, 0.7847799,   -2.6583774,   -1.6555126,   -2.815217,    -0.18486327,
    -1.1745405,  2.2054548,   -0.9455488,  -1.5059378,   -0.6565779,   1.2600167,    -2.3821032,
    -0.26981768, -4.063028,   -0.45026755, -1.834182,    2.906159,     1.1662107,    0.08017355,
    -0.8102168,  3.3697448,   0.37883544,  -1.6882677,   0.71782255,   -1.5592864,   -0.37134206,
    -3.2504182,  1.2694929,   -1.7516978,  -0.12049621,  1.3492393,    -0.40591407,  0.6280788,
    -1.0120616,  2.101255,    -0.7040838,  -1.1866775,   -0.7236214,   -0.8188298,   1.1767912,
    1.1913915,   0.6185412,   0.9365735,   1.3821521,    -1.8589101,   0.9124049,    -0.83333874,
    -0.9172766,  -2.0438805,  0.469943,    1.4887323,    0.24271065,   -2.0128174,   1.3354056,
    1.5705173,   0.6380501,   2.0443192,   -1.407867,    -0.6085211,   0.13712549,   1.9739413,
    1.8154222,   -3.012415,   0.83554983,  0.5828651,    0.14901292,   -0.8463185,   -0.047633052,
    -0.5389695,  0.41219842,  -0.61554337, 0.45593047,   -1.4136335,   -3.6993682,   0.33988523,
    -1.7985406,  1.1319201,   1.5479275,   -0.15549183,  0.1671977,    1.4381963,    1.5354156,
    -0.64630884, -0.2005459,  -0.8759377,  -2.1679733,   -1.130661,    0.052789927,  -2.0507228,
    0.55622774,  0.4106456,   1.1299163,   -0.15413862,  -0.1215477,   0.5790715,    3.4873276,
    -0.38861734, 1.1647955,   -0.7212916,  -1.055282,    -0.4247969,   2.521102};

static const std::vector<float> expected_dft2d_signal_size_results_5 = {
    8.798115,    7.435564,    -1.856497,   0.6967675,    1.9218704,    0.8142178,    0.36594042,
    2.6711423,   10.539949,   8.829714,    -0.12551129,  -0.56251144,  1.2948477,    1.2702878,
    0.34664208,  -0.8751477,  7.8924866,   9.178925,     0.10114479,   -0.25878292,  0.10166702,
    -1.4982777,  -2.0095286,  0.6289345,   10.036068,    5.0261283,    -1.8025928,   -0.1469695,
    0.32685816,  0.24962878,  1.3202658,   2.5126028,    9.108963,     7.5209365,    -0.6332305,
    -1.1228236,  1.1512439,   -0.38064647, -1.2855166,   -0.8678701,   6.9929824,    8.779736,
    1.4174356,   3.4299555,   -1.5252162,  0.26026887,   0.6261386,    -1.176516,    3.6406178,
    -3.1231828,  1.3689959,   -0.68496245, 0.48079437,   -0.796133,    -1.0121856,   -0.5319141,
    1.5931433,   -2.9828,     0.30207276,  -0.6309908,   0.016751591,  -1.5604393,   -1.6819947,
    -0.6282208,  3.1937852,   -3.9242973,  0.14749089,   0.43185335,   -0.2489954,   1.0694493,
    -0.22732289, 1.4830055,   0.12429348,  -3.6180806,   -0.078341216, -0.84553397,  1.3277338,
    -0.93593657, 1.1153932,   0.46926653,  -0.01660335,  -2.19146,     0.0050742924, 0.16887031,
    -0.13835368, -0.22266653, -3.1048126,  0.28844416,   0.7672101,    -1.3757203,   1.4307625,
    -0.8216129,  0.5319145,   0.6184877,   -0.42566353,  0.5484251,    3.4520624,    -2.2700894,
    0.48456866,  0.50225604,  1.4660833,   -0.8105061,   0.26780176,   0.08084947,   3.162387,
    0.07700956,  -0.92056286, 0.15617561,  -1.4525607,   -0.030844629, 1.7492342,    -1.8916597,
    1.9068949,   -0.5026501,  0.9467689,   -0.5010593,   -1.7409866,   -0.12933461,  -1.7828977,
    1.2331147,   2.161806,    0.7638128,   -2.586247,    1.2947125,    -1.5071061,   -0.28886533,
    0.20840368,  0.28412366,  4.238263,    0.624877,     0.7483618,    1.7655015,    1.4296482,
    -1.0612158,  -0.36541831, 0.8688911,   1.9176203,    2.7282064,    0.99068373,   1.069428,
    1.4693688,   0.456266,    1.3150638,   -2.101551,    2.3444064,    3.1458972,    0.9041112,
    -0.18337753, -0.4628029,  -1.5899987,  -0.96295846,  1.8805511,    0.9849721,    2.3036761,
    -0.21096146, -1.9477112,  -0.28516757, 1.7867885,    -1.6535637,   -0.59629035,  -1.8184824,
    2.2060392,   -0.3854983,  -0.6308861,  1.3785319,    0.6067129,    0.0436399,    1.6603687,
    1.0021243,   3.9316323,   0.0843097,   -0.1404491,   0.55632716,   -0.1349278,   1.0070219,
    1.4757582,   0.6121656,   2.6698961,   1.4586289,    -3.1324296,   -0.5294236,   -0.8063517,
    -0.08189219, 1.4184481,   1.7388614,   3.607197,     -0.8525236,   0.45530546,   -2.311192,
    -1.7529185,  -1.2852949,  -1.3684388,  -1.2834095,   -1.3844275,   1.6546304,    -2.4121,
    -1.1708138,  0.62875193,  -0.80945396, -1.2599692,   -4.1222115,   2.373704,     -1.2511115,
    1.191483,    -0.0833078,  0.1342597,   -0.019162834, -1.6984439,   -2.3708487,   2.8924727,
    0.07090135,  0.21195525,  -0.7699983,  0.69867724,   -0.18473946,  0.4516183,    -0.02681084,
    2.3169198,   -0.36051208, 0.13176969,  -0.40343064,  0.42170894,   -0.7431194,   0.20806183,
    -2.546812,   1.1634552,   -0.6182922,  0.45351535,   -0.045230594, 0.0048814267, 0.13067257,
    -1.9887246,  -3.0333633,  1.5871837,   0.06688923,   1.4174063,    0.79458106,   1.5272335,
    -0.8169159,  0.32463634};

static const std::vector<float> expected_dft3d_signal_size_results = {
    49.728928,   45.265354,    -1.5653555,  1.8258603,    1.1586399,   1.1093023,    3.4622312,
    -3.068374,   -1.6144468,   3.955975,    0.7007327,    -12.262681,  -1.6978629,   0.005776912,
    2.1834314,   4.4191337,    -0.41734934, 1.0642323,    2.1575608,   -1.6815078,   13.372203,
    -10.360054,  -1.2915184,   -4.100011,   -2.7976396,   2.0324564,   -0.87680733,  -5.934458,
    -0.45711768, 6.1547985,    7.1691613,   1.8739722,    3.5988164,   2.9202309,    1.6726661,
    1.2348467,   -0.100646675, -1.0087874,  -0.26146126,  -2.555842,   -0.054751158, 11.550103,
    -3.3944821,  -1.6603465,   1.6404665,   1.0531695,    -3.6879756,  2.841142,     -0.9843147,
    8.387482,    -5.754649,    6.6857386,   -5.0392313,   -0.09710765, -1.665895,    3.3698869,
    2.4361796,   -1.1781744,   9.256103,    -2.0982075,   -10.405502,  6.6115084,    4.9817243,
    -0.2607507,  -1.7066463,   2.1667802,   -0.124430835, 0.9151207,   -3.847056,    -1.9442594,
    0.9573264,   -3.7053752,   1.6387817,   0.4028574,    1.9858243,   1.7182893,    -3.1588082,
    -0.20052435, -2.4657276,   -0.34011212, -1.8019962,   -3.6929393,  -0.52881837,  0.70309484,
    -4.9345665,  -0.51714915,  2.9993763,   1.8249977,    1.7067848,   -0.3447387,   3.3535786,
    -3.3786156,  -0.066281304, -3.208472,   2.4551795,    -1.3978454,  -0.6575866,   -1.5296084,
    -2.9372633,  2.5082207,    4.9071603,   -1.0131404,   -0.35466444, 3.4279532,    -0.5829768,
    1.2354829,   2.7378159,    -2.277992,   -3.9665284,   -1.6454957,  -2.1138058,   -6.9444704,
    6.667962,    -2.4544113,   0.8878386,   1.802904,     1.0337299,   -0.83422416,  3.2563305,
    4.0551376,   0.9553633,    -0.1692334,  -3.562861,    1.3307956,   -0.59709,     1.4318806,
    -1.5622483,  -2.975128,    0.5372238,   0.39611292,   5.9997783,   -4.276651,    2.7130606,
    -4.0972834,  3.100973,     -4.163089,   0.6286693,    -2.0351622,  -0.85036594,  -1.843902,
    0.81661844,  0.86445946,   0.66823524,  -3.632821,    -2.0656922,  -2.796157,    -1.0641904,
    1.0206027,   -1.1506183,   1.9784743,   0.97015285,   0.84469545,  -1.6403551,   -0.3596968,
    3.9319327,   -3.472964,    1.9130713,   -1.3176007,   -0.56489336, -0.21743466,  1.0296725,
    -2.3882782,  3.0200386,    -1.5742422,  2.092337,     0.9063153,   -2.189577,    1.3231093,
    -0.4461195,  1.6234826,    3.447591,    -1.9438455,   2.598078,    2.8626804,    0.66956127,
    -4.3974814,  -0.47485933,  -0.22436841, 0.06777835,   5.5086756,   0.47679606,   2.6178322,
    -0.02077597, -0.9915889,   2.167689,    -2.8916657,   -1.9383656,  3.241434,     -0.69579893,
    -0.63952047, 3.3214207,    -2.407516,   5.2349954,    -6.0218415,  5.819358,     -7.4365478,
    2.8206537,   2.7585952,    1.7629972,   0.044816617,  1.1392056,   -4.696983,    0.45275614,
    1.9134089,   -3.8572056,   -2.009159,   1.6307822,    -0.9646755,  -1.2407924,   2.6003554};

NGRAPH_TEST(${BACKEND_NAME}, dft1d_eval)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft1d_eval_1)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_results_1[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft1d_eval_float16)
{
    auto data = std::make_shared<op::Parameter>(element::f16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});
    copy_data(backend_data, from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = to_float_vector(read_vector<float16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_float16_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft1d_eval_bfloat16)
{
    auto data = std::make_shared<op::Parameter>(element::bf16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});
    copy_data(backend_data, bfloat16::from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = bfloat16::to_float_vector(read_vector<bfloat16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_bfloat16_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft1d_eval_i32)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i32, Shape{1}, {2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_eval_1)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_results_1[j], 0.000062);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_eval)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_results[j], 0.000062);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_eval_float16)
{
    auto data = std::make_shared<op::Parameter>(element::f16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});
    copy_data(backend_data, from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = to_float_vector(read_vector<float16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_float16_results[j], 0.002);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_eval_bfloat16)
{
    auto data = std::make_shared<op::Parameter>(element::bf16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});
    copy_data(backend_data, bfloat16::from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = bfloat16::to_float_vector(read_vector<bfloat16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_bfloat16_results[j], 0.0003);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_eval_i32)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i32, Shape{2}, {1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_results[j], 0.000062);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_eval_1)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {0, 1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_results_1[j], 0.0002);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_eval)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {0, 1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_results[j], 0.0002);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_eval_float16)
{
    auto data = std::make_shared<op::Parameter>(element::f16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {0, 1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f16, Shape{2, 10, 10, 2});
    copy_data(backend_data, from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = to_float_vector(read_vector<float16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_float16_results[j], 0.0005);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_eval_bfloat16)
{
    auto data = std::make_shared<op::Parameter>(element::bf16, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {0, 1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::bf16, Shape{2, 10, 10, 2});
    copy_data(backend_data, bfloat16::from_float_vector(input_data));

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = bfloat16::to_float_vector(read_vector<bfloat16>(dft_output));
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_bfloat16_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_eval_i32)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i32, Shape{3}, {0, 1, 2});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_results[j], 0.0002);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft1d_signal_size_eval)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{2, 10, 10, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {-2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{1}, {20});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{2, 20, 10, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{2, 10, 10, 2});
    copy_data(backend_data, input_data);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft1d_signal_size_results[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_signal_size_eval_1)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {0, 2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {5, 9});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{5, 6, 9, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_signal_size_results_1[j], 0.000021);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_signal_size_eval_2)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {0, 1});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {4, 6});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_signal_size_results_2[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_signal_size_eval_3)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {0, 2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {3, 4});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{3, 6, 4, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_signal_size_results_3[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_signal_size_eval_4)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {0, 2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {4, 8});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_signal_size_results_4[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft2d_signal_size_eval_5)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {0, 2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{2}, {5, 4});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{5, 6, 4, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft2d_signal_size_results_5[j], 0.00001);
    }
}

NGRAPH_TEST(${BACKEND_NAME}, dft3d_signal_size_eval)
{
    auto data = std::make_shared<op::Parameter>(element::f32, Shape{4, 6, 8, 2});
    auto axes_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {0, 1, 2});
    auto signal_size_input = op::Constant::create<int64_t>(element::i64, Shape{3}, {3, 7, 5});
    auto dft = std::make_shared<op::v7::DFT>(data, axes_input, signal_size_input);

    auto f = make_shared<Function>(dft, ParameterVector{data});

    auto backend = runtime::Backend::create("${BACKEND_NAME}");
    auto dft_output = backend->create_tensor(element::f32, Shape{3, 7, 5, 2});

    auto backend_data = backend->create_tensor(element::f32, Shape{4, 6, 8, 2});
    copy_data(backend_data, input_data_1);

    auto handle = backend->compile(f);

    handle->call({dft_output}, {backend_data});

    auto result = read_vector<float>(dft_output);
    size_t num_of_elems = result.size();
    for (std::size_t j = 0; j < num_of_elems; ++j)
    {
        EXPECT_NEAR(result[j], expected_dft3d_signal_size_results[j], 0.00002);
    }
}
